testing - 我可以并行运行 Nightwatch js,每个工作人员使用不同的环境吗?
问题描述
我目前正在使用 Nightwatch js 并行运行我的 E2E 测试。
我遇到的问题是我的测试共享同一个数据库,这导致我在不同的测试/工作人员之间重写共享数据时出现问题,从而导致测试不稳定。我考虑过使用自己的数据库运行每个测试工作者,但我不确定如何在实践中做到这一点。我的出发点是为测试数据库设置不同的设置,每个设置都在一个可以由单个工作人员访问的夜间值守环境中,但到目前为止我还没有发现这是否可行。
有任何想法吗?
解决方案
是的,您可以对不同的工人运行不同的测试,Nightwatch 提供了一种方法来做到这一点。我做了一些非常相似的事情,我在三个不同的浏览器上并行运行相同的测试。
您必须添加test_Worker
配置,以允许并行运行测试。启用此功能后,测试运行程序将启动可配置数量的子进程,然后将加载的测试分发到并行运行。
worker 选项配置可以同时运行的子进程数量。a) “auto” – 由 CPU 的数量决定,例如 4 个 CPU 意味着 4 个工作人员 b) {number} – 指定工作人员的确切数量
test_workers: {
enabled: true,
workers: 'auto'
}
这是我的Nightwatch.conf.js
文件的样子:
{
module.exports = {
src_folders: ["tests"],
test_settings: {
default: {
desiredCapabilities: {
browserName: 'chrome'
},
webdriver: {
start_process: true,
port: 4444,
server_path: require('chromedriver').path,
}
},
test_workers: {
enabled: true,
workers: 'auto'
},
safari: {
desiredCapabilities: {
browserName: 'safari',
alwaysMatch: {
acceptInsecureCerts: false
}
},
webdriver: {
port: 4445,
start_process: true,
server_path: '/usr/bin/safaridriver'
}
},
firefox: {
desiredCapabilities: {
browserName: 'firefox'
},
webdriver: {
start_process: true,
port: 4446,
server_path: require('geckodriver').path
}
}
}
}
现在要执行测试,我使用以下命令:
npx nightwatch tests/TC001_WikiSearch.js -e default,firefox,safari
引用自:https ://testersdock.com/execute-parallel-tests-nightwatchjs/
推荐阅读
- javascript - 自定义 JS 影响表格格式
- java - 使用 Float.floatToIntBits() 然后 Integer.toBinaryString() 的结果令人困惑
- azure - 具有 SSIS 数据筛选的 Azure 数据湖
- python - Maya polyInfo -ve 返回错误的值
- javascript - 如何通过js代码在Spreadjs中调用事件celldoubleclick?
- java - 无法在java中删除zip文件
- php - Laravel 5.6 慢 redis 队列性能
- javascript - JavaScript 没有在页眉或页脚中触发
- sql-server - MDX 用于从今天起的最后一个日期 6 个月后获取。例如,2019-02-28
- oracle-cloud-infrastructure - 我应该如何以及在哪里在代码中添加存储桶名称、对象名称、命名空间来上传数据?