我如何 运行 按特定顺序进行 Nightwatch 测试?
How can I run Nightwatch tests in a specific order?
我有几个测试 UI 并且还用于在整个过程中创建数据。
一组单独的测试依赖于此数据,这意味着这些必须 运行 只有在第一组有 运行 之后。
我知道 运行他们中的一组,或者 运行他们有标签,但我怎样才能 运行 他们按特定的顺序?
Nightwatch 将 运行 按顺序在特定文件中进行每个测试,因此一个(天真的)解决方案是将每个测试按您希望的顺序放在同一个文件中 运行 .
如果您对单个文件有太多测试,这将变得笨拙。要解决这个问题,您可以利用 Nightwatch 运行 按字母顺序排列每个测试文件。一种方法是在每个测试文件前加上一个数字,表示您希望它们在 运行 中的顺序。例如,如果您有两个测试文件,before.js
和 after.js
,并且您首先想要 before.js
到 运行,您可以将文件的名称更改为 01before.js
和 02after.js
。这将使 Nightwatch 以您想要的顺序读取文件。
这不是一个很好的答案,但它确实有效:对您的测试文件进行数字排序。
0001_first_test_I_want_to_run.js
0002_second_test_I_want_to_run.js
...
9999_last_test_I-want_to_run.js
为了控制顺序(以及使用通用模块进行身份验证),我使用了“主”测试模块并按我想要的顺序导入测试:
里面main.test.js
// import test modules
const first = require('./first.test.js');
const second = require('./second.test.js');
module.exports = {
before(){
// login, etc.
},
'first': (browser) => {
first.run(browser);
},
'second': (browser) => {
second.run(browser);
},
}
并在 first.test.js
var tests = {
'google': (browser) => {
browser.url('https://google.com';
},
'cnn': (browser) => {
browser.url('https://cnn.com';
}
};
module.exports = {
// allow nightwatch to run test module only inside _main
'@disabled': true,
'run': (browser) => {
// call all functions inside tests
Object.values(tests)
.filter(f => typeof f === 'function')
.forEach(f => f(browser));
}
};
我有几个测试 UI 并且还用于在整个过程中创建数据。
一组单独的测试依赖于此数据,这意味着这些必须 运行 只有在第一组有 运行 之后。
我知道 运行他们中的一组,或者 运行他们有标签,但我怎样才能 运行 他们按特定的顺序?
Nightwatch 将 运行 按顺序在特定文件中进行每个测试,因此一个(天真的)解决方案是将每个测试按您希望的顺序放在同一个文件中 运行 .
如果您对单个文件有太多测试,这将变得笨拙。要解决这个问题,您可以利用 Nightwatch 运行 按字母顺序排列每个测试文件。一种方法是在每个测试文件前加上一个数字,表示您希望它们在 运行 中的顺序。例如,如果您有两个测试文件,before.js
和 after.js
,并且您首先想要 before.js
到 运行,您可以将文件的名称更改为 01before.js
和 02after.js
。这将使 Nightwatch 以您想要的顺序读取文件。
这不是一个很好的答案,但它确实有效:对您的测试文件进行数字排序。
0001_first_test_I_want_to_run.js
0002_second_test_I_want_to_run.js
...
9999_last_test_I-want_to_run.js
为了控制顺序(以及使用通用模块进行身份验证),我使用了“主”测试模块并按我想要的顺序导入测试:
里面main.test.js
// import test modules
const first = require('./first.test.js');
const second = require('./second.test.js');
module.exports = {
before(){
// login, etc.
},
'first': (browser) => {
first.run(browser);
},
'second': (browser) => {
second.run(browser);
},
}
并在 first.test.js
var tests = {
'google': (browser) => {
browser.url('https://google.com';
},
'cnn': (browser) => {
browser.url('https://cnn.com';
}
};
module.exports = {
// allow nightwatch to run test module only inside _main
'@disabled': true,
'run': (browser) => {
// call all functions inside tests
Object.values(tests)
.filter(f => typeof f === 'function')
.forEach(f => f(browser));
}
};