如何将map对象设置为Cypress result json文件



我使用cypress runner来执行spec文件并返回如下所示的结果。

Runner.js:

const cypress = require('cypress');
const param = require("./cypress/support/Param");
async function testRunner(fixture) {
return cypress.run({
config: {
},
env: {
testcaseID: `${fixture}`,
},
spec: './cypress/integration/' + `${param.getSpec()}` + ".spec.js",
});
}

规范文件:

let map = new Map();
describe("How to add map values in the cypress result.json",() =>{
const baseUrl = "https://www.google.com/";
const testData = Cypress.env('fixture')
beforeEach("",()=>{
cy.visit(baseUrl);
});
it("Test Case1: Search the keyword", function () {
cy.xpath("//input[@name='q']").type(testData.searchKeyword);
map.set("UserInput",testData.searchKeyword); //It's just sample
cy.xpath("//input[@value='Google Search']").click();
map.set("customMessage","test"); //It's just sample but actual usecase is different
cy.get("//ul/li[2]").should("be.visible");
});
});

使用下面的行在主运行程序中获得结果:

result = await testRunner(dataSet[i]);
if (result.runs[0].stats.failures === 1) {
console.log(result);
}

上面的代码工作正常,我可以得到结果。Json,它包含测试用例是通过还是失败。但是除此之外,我只想添加一些我存储在Map中的运行时值,并希望将它们添加到Cypress.run返回结果中。

谁能告诉我处理这个问题的最佳方法?我怎么能得到一些运行时的值,这是可用的内部地图,将与柏树运行结果一起返回。

提前感谢。

更新:

我刚刚创建了一个Map()变量,并通过getter和setter调用该变量,但仍然没有运气。

var EnumPojo = {

LISTENER: new Map(),
get listener()
{
return this.LISTENER;
},
set listener(value)
{
return this.listener =value;
};
}

将上面的映射调用到脚本中:

const runtimeValues = require("../../EnumPojo.js");
describe("How to add map values in the cypress result.json",() =>{

const baseUrl = "https://www.google.com/";

const testData = Cypress.env('fixture')

beforeEach("",()=>{

cy.visit(baseUrl);
});

it("Test Case1: Search the keyword", function () {
cy.xpath("//input[@name='q']").type(testData.searchKeyword);
runtimeValues.LISTENER.set("UserInput",testData.searchKeyword); //It's just sample
cy.xpath("//input[@value='Google Search']").click();
runtimeValues.LISTENER.set("customMessage","test"); //It's just sample but actual usecase is different
cy.get("//ul/li[2]").should("be.visible");
});

});

:

const runtimeValues = require("../../EnumPojo.js");
result = await testRunner(dataSet[i]);
if (result.runs[0].stats.failures === 1) {
console.log(result);
console.log(runtimeValues.LISTENER);
}

输出:地图{0}

在测试中,将地图保存在fixture

it('my-test', function () {
...
cy.fixture('map.json').then(mapData => {
mapData['my-test'] = JSON.stringify(map)  // use unique key for this test
cy.writeFile('./fixtures/map.json', JSON.stringify(mapData))
})
})

在跑步者,

const fs = require('fs')
cypress.run({...})
.then(result => {
const mapData = fs.readFileSync('./cypress/fixtures/map.json')  // adjust path to where script is
/*
mapData is {
'my-test': { ...data here },
'other-test': { ...data here },
}
*/   
})

但是JavascriptMap可能无法正确序列化,最好在保存前转换为object。

相关内容

  • 没有找到相关文章

最新更新