首页 > 解决方案 > 我可以并行运行 Nightwatch js,每个工作人员使用不同的环境吗?

问题描述

我目前正在使用 Nightwatch js 并行运行我的 E2E 测试。

我遇到的问题是我的测试共享同一个数据库,这导致我在不同的测试/工作人员之间重写共享数据时出现问题,从而导致测试不稳定。我考虑过使用自己的数据库运行每个测试工作者,但我不确定如何在实践中做到这一点。我的出发点是为测试数据库设置不同的设置,每个设置都在一个可以由单个工作人员访问的夜间值守环境中,但到目前为止我还没有发现这是否可行。

有任何想法吗?

标签: testinge2e-testingnightwatch.js

解决方案


是的,您可以对不同的工人运行不同的测试,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/


推荐阅读