Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何按特定顺序运行夜间监视测试?_Javascript_Selenium_Automated Tests_Qa_Nightwatch.js - Fatal编程技术网

Javascript 如何按特定顺序运行夜间监视测试?

Javascript 如何按特定顺序运行夜间监视测试?,javascript,selenium,automated-tests,qa,nightwatch.js,Javascript,Selenium,Automated Tests,Qa,Nightwatch.js,我有几个测试,这些测试测试UI,并在过程中创建数据 一组单独的测试依赖于此数据,这意味着这些测试必须仅在第一组测试运行之后运行 我知道如何运行它们的一组,或者使用标记运行它们,但是如何按照特定的顺序运行它们呢 Nightwatch将按顺序运行特定文件中的每个测试,因此一个(简单的)解决方案是将每个测试按您希望它们运行的顺序放在同一个文件中 如果一个文件有太多的测试,这将变得很难处理。为了解决这个问题,您可以利用Nightwatch按字母顺序运行每个测试文件。实现这一点的一种方法是在每个测试文件前

我有几个测试,这些测试测试UI,并在过程中创建数据

一组单独的测试依赖于此数据,这意味着这些测试必须仅在第一组测试运行之后运行


我知道如何运行它们的一组,或者使用标记运行它们,但是如何按照特定的顺序运行它们呢

Nightwatch将按顺序运行特定文件中的每个测试,因此一个(简单的)解决方案是将每个测试按您希望它们运行的顺序放在同一个文件中


如果一个文件有太多的测试,这将变得很难处理。为了解决这个问题,您可以利用Nightwatch按字母顺序运行每个测试文件。实现这一点的一种方法是在每个测试文件前面加上一个数字,指示您希望它们运行的顺序。例如,如果您有两个测试文件,
before.js
before.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

//导入测试模块
const first=require('./first.test.js');
const second=require('./second.test.js');
module.exports={
在()之前{
//登录等。
},
“第一个”:(浏览器)=>{
首先,运行(浏览器);
},
“第二个”:(浏览器)=>{
运行(浏览器);
},
}
在first.test.js中

var测试={
“谷歌”:(浏览器)=>{
browser.url('https://google.com';
},
“cnn”:(浏览器)=>{
browser.url('https://cnn.com';
}
};
module.exports={
//仅允许夜视在主电源内运行测试模块
“@disabled”:对,
“运行”:(浏览器)=>{
//调用测试中的所有函数
对象值(测试)
.filter(f=>typeof f=='function')
.forEach(f=>f(浏览器));
}
};

您可以使用
--testcase
运行一个测试用例。我想您可以使用它一次运行一个测试用例。@Brian不,因为每次我们按照您的建议运行测试时,Nightwatch都会创建一个单独的会话。我在Nightwatch v1.1.8中尝试了这一点,将每个测试用例放在一个文件夹中,名为“01…”,“02…”,等等,但它同时运行所有测试用例