【问题标题】:How can I run Nightwatch tests in a specific order?如何按特定顺序运行 Nightwatch 测试?
【发布时间】:2015-12-18 16:05:52
【问题描述】:

我有几个测试来测试 UI 并在此过程中创建数据。

一组单独的测试依赖于这些数据,这意味着这些测试只能在第一组运行后运行。

我知道运行一组它们,或者使用标签运行它们,但是我怎样才能以特定的顺序运行它们?

【问题讨论】:

  • 您可以使用--testcase 运行单个测试用例。我想您可以使用它一次运行它们。
  • @Brian 不,因为 Nightwatch 每次按照您建议的方式运行测试时都会创建一个单独的会话。

标签: javascript selenium automated-tests qa nightwatch.js


【解决方案1】:

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

如果您对单个文件进行太多测试,这将变得笨拙。为了解决这个问题,您可以利用 Nightwatch 按字母顺序运行每个测试文件。一种方法是在每个测试文件前面加上一个数字,表示您希望它们运行的​​顺序。例如,如果您有两个测试文件,before.js 和after.js,并且您想要before.js要首先运行,您只需将文件名更改为01before.js 和02after.js。这将使 Nightwatch 以您想要的顺序读取文件。

【讨论】:

  • 我用 nightwatch v1.1.8 试过这个,把每个测试用例放在一个文件夹中,命名为“01..”、“02..”等等,但它同时运行所有测试用例
【解决方案2】:

这不是一个很好的答案,但它确实有效:对您的测试文件进行数字排序。

0001_first_test_I_want_to_run.js
0002_second_test_I_want_to_run.js
...
9999_last_test_I-want_to_run.js

【讨论】:

    【解决方案3】:

    为了控制顺序(以及使用通用模块进行身份验证),我使用了“主”测试模块并按照我想要的顺序导入了测试:

    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));
        }
    };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-05
      • 2014-07-13
      • 2018-08-21
      • 2023-01-08
      • 2014-08-06
      • 2011-04-11
      • 2015-12-21
      相关资源
      最近更新 更多