我在套件中有一组测试,我希望在多个页面对象中运行。我尝试构建一个如下所示的测试对象,除了它只运行第一个。
module.exports = {
'test1': {
before: function() { console.log('before1'); },
'test 1a': function() { console.log('test1a'); }
},
'test2': {
before: function() { console.log('before2'); },
'test 1a': function() { console.log('test2a'); }
}
};
是否可以在一个测试套件中进行这种嵌套?我想要实现的实际用例是这样的:
['page1', 'page2'].forEach(page => {
this[`Do something on ${page}`] = {
before: client => {
client.page[page].navigate();
},
'it does something': client => {
client.page[page]().expect.section('@element').visible;
}
}
我想构建动态测试套件,在许多" page"上运行相同的测试。对象。
更新:我真的想继续使用Nightwatch跑步者,而不是像Mocha那样确实拥有此功能的其他跑步者。
答案 0 :(得分:0)
要实现这一点,你需要更改nightwatch.json配置以使用其他测试运行器,在这种情况下mocha具有更大的灵活性:
"test_runner" : {
"type" : "mocha",
"options" : {
"ui" : "bdd",
"reporter" : "spec"
}
}
然后你就可以写下你的测试:
describe('describe', function() {
before(function(cl, done) {
ng = ng({client: cl, screen: 'rounding'});
client = cl;
console.log('before1')
done();
});
after(function(client, done) {
if (client.sessionId) {
client
.pause(1999)
.end(function() {
done();
});
} else {
done();
}
});
afterEach(function(client, done) {
done();
});
beforeEach(function(client, done) {
done();
});
describe('describe nested', function () {
before(function (client, done) {
console.log('before before!')
done();
});
it('expectation', function (client) {
goToRoundingPage(client);
client.pause(111);
});
});
});
正如您可以通过此testrunner看到的,您可以根据需要嵌套测试并支持嵌套之前/之后等等