如何制作动态测试用例?
这些搜索输入不是硬编码的,它是由函数生成的( - 它将对所有网页进行整个爬行并查找每个应用并使用{name:xxxx,link:,xxxx}保存它们)
对于每次搜索,应该有一组从“步骤1”到“步骤4”的单独测试
我改为Mocha,但在处理搜索输入之前,Mocha似乎编译了测试用例
使用之前,或添加'步骤0 - 处理搜索',似乎不起作用。
var searches = [];
describe('search', function() {
before(function(browser) {
searches = populateSearch(browser);
});
it('step 0 - process search': function(browser) {
searches = populateSearch();
});
searches.forEach( search => {
it('step 1 - launch url': function(browser) {
});
it('step 2 - click search box': function(browser) {
});
it('step 3 - type in search': function(browser) {
});
it('step 4 - search found in search lists': function(broswer) {
assert.equal(search.name, 'xxx')
assert.equal(search.link, 'xxx')
});
});
});
现在,我认为有两个选择
a)使用browser.globals.searches填充先前的测试,并在测试用例中显示填充(string,()=> {})。但是它仍然不起作用,因为编译时的browser.globals.searches是空的,所以没有生成测试用例? 有没有什么方法可以让mocha首先运行一个测试来填充全局变量,然后编译实际测试,以便动态创建测试?
b)使用node做动态和运行,这个问题就是我无法在套件中添加嵌套的describe,我该如何添加嵌套的describe?var Mocha = require('mocha');
var Test = Mocha.Test;
var Suite = Mocha.Suite;
var mocha = new Mocha();
var suite = Suite.create(mocha.suite, 'Search Box');
suite.addTest(new Test('I\'m a dynamic test', function () {
console.log("haha");
}));
更新
我正在尝试使用async: - delay和run()
在nightwatch.json中
"test_runner" : {
"type" : "mocha",
"options" : {
"ui" : "bdd",
"reporter" : "list",
"delay" : true
}
}
在search.js
中"use strict";
var helpers_1 = require('../util/helpers');
var utils_1 = require('../util/utils');
var subjects_1 = require('../util/subjects');
var nightwatch = require('nightwatch');
var client = nightwatch.initClient({
silent : true
});
var browser = client.api();
function test() {
describe('Search', function () {
browser
.url(browser.launch_url)
.waitForElementVisible('body', 3000, function () {
helpers_1.getToCheckTiles(browser);
});
Object.Keys(browser.globals.toCheckTiles).forEach(function (type) {
browser.globals.toCheckTiles[type].forEach(function (tile) {
it('step 1 - launch url': function(browser) {
});
it('step 2 - click search box': function(browser) {
});
it('step 3 - type in search': function(browser) {
});
it('step 4 - search found in search lists': function(browser) {
assert.equal(search.name, 'xxx')
assert.equal(search.link, 'xxx')
});
});
});
run();
});
setTimeout(test, 10000);
程序暂停,无论我输入哪个超时,退出