1

postman に問題なく実行されるスクリプトがありますが、Newman で実行しようとすると、test-script で json エラーが発生します。スクリプトは次のとおりです。

const state = pm.environment.get("switch");

    if (state == "serbian" && state != "undefined" && state !== null ) {

pm.test("Question is correct", function () {
    pm.expect(pm.response.json().question).to.include("U cilju osiguranja 
sigurnosti i zaštite podataka, molim Vas da odgovorite na par pitanja. Koje 
je ime grada koji odgovara adresi vašeg prebivališta?");
});

} else if (state == "english" && state != "undefined" && state !== null) {
pm.test("Question is correct", function () {
    pm.expect(pm.response.json().question).to.include("OK. Let's start with 
few quick questions.||What's the name of the city you live in?");
});
}

そして、テスト全体は次のようになります (問題には影響しません)。

// Parse in the response body to check the response
var jsonData = JSON.parse(responseBody);

// Run the common tests, I know eval is evil
eval(globals.commonTests)();

// Suplement the basic data for variables
var positiveAnswers = JSON.parse(pm.environment.get("positiveAnswers"));

// Check if there are still responses to loop through
if ( positiveAnswers.length > 0 && positiveAnswers != "undefined" && 
positiveAnswers !== null ) {

let positiveAnswers = JSON.parse(pm.environment.get("positiveAnswers"));
        pm.environment.set("positiveAnswer", positiveAnswers.shift());
        pm.environment.set("positiveAnswers", 
JSON.stringify(positiveAnswers));

// Check the status of a request
pm.test("Next step is as expected", function () {
    pm.expect(pm.response.json().locationOrder).to.be.equal("A01");
});   
    postman.setNextRequest("Get question D01 Positive");
    console.log ("Answer sent is: " + pm.environment.get("positiveAnswer"));
}
setTimeout(function(){
        console.log('Timeout!');
    },100);
// Do the validation of the response
const state = pm.environment.get("switch");

    if (state == "serbian" && state != "undefined" && state !== null ) {
pm.test("Question is correct", function () {
    pm.expect(pm.response.json().question).to.include("U cilju osiguranja 
sigurnosti i zaštite podataka, molim Vas da odgovorite na par pitanja. Koje 
je ime grada koji odgovara adresi vašeg prebivališta?");
});
} else if (state == "english" && state != "undefined" && state !== null) {
pm.test("Question is correct", function () {
    pm.expect(pm.response.json().question).to.include("OK. Let's start with 
few quick questions.||What's the name of the city you live in?");
});
}

いくつかのデバッグの後、私は

const state = pm.environment.get("switch");

Newman では null を返します。

値をチェックしてから、さまざまな言語で返された文字列を検証するという考え方です。したがって、ハードコードすることはできませんが、env に保持し、別のスクリプトで変更します。やろうとした

var state = JSON.parse(pm.environment.get("switch"));

私が作成した場所では、変数を引用符で囲んでいましたが、同じ結果です。問題を解決する方法を知っている人はいますか?

4

0 に答える 0