【问题标题】:Problem with running individual Nightwatchjs tests运行单个 Nightwatchjs 测试的问题
【发布时间】:2019-12-19 15:24:56
【问题描述】:

如果我使用测试脚本的绝对路径,我似乎只能运行单个 nightwatchjs 测试。

因此,例如,如果我从以下文件夹运行测试;

/Users/darrenharley/Documents/Git/uk-content-parkers/Tests/Functional/tests

以下内容;

npm run test:live /Users/darrenharley/Documents/Git/uk-content-parkers/Tests/Functional/tests/current_functionality/gamAds/PAR-5139.js

它工作正常。

但是,我需要在不使用本地文件结构的情况下运行此测试(因为最终将通过 Jenkins 构建运行,因此无法使用它)。

但是如果我使用以下内容运行测试;

npm run test:live ./current_functionality/gamAds/PAR-5139.js

失败,出现以下错误;

错误:ENOENT:没有这样的文件或目录,stat './current_functionality/gamAds/PAR-5139.js'

我在这里做错了什么吗?

如果有帮助,在我的 nightwatch.conf.js 文件中有这个;

 src_folders: [
    'tests/',
  ],

在我的 package.json 文件中有这个;

"test:live": "nightwatch --config config/nightwatch.conf.js --env live --suiteRetries 3",

任何帮助将不胜感激,因为这似乎是一件很基本的事情。

非常感谢。

【问题讨论】:

    标签: javascript nightwatch.js


    【解决方案1】:

    首先,没有足够的关于您的 Jenkins 工作的信息来做出有根据的猜测(从哪里触发 NPM 命令?项目根是什么?)。因此,最好的办法是在调用 NPM 之前添加 pwd 并充分了解项目根目录是什么。然后,相应地更新您的命令。


    现在...

    对于您手头的任务,最简单(更不用说最干净)的方法是利用 NightwatchJS test-groupstest-tags

    ❒ 使用test-tags:

    module.exports = {
      '@tags': ['PAR-5139', 'live', 'smoke'],
      'This is the PAR-5139 test': function (browser) {
         // > your code here <
      }
    };
    

    要启用逻辑,您的命令将变为:

    npm run test:live -- --tag PAR-5139在添加额外的 NightwatchJS 开关之前,请注意-- 的必要前置。需要将传递给 npm 命令本身的参数和传递给脚本的参数分开。

    ❒ 使用test-groups:

    让我们考虑以下tests 结构:

    tests/
      ├── current_functionality
      |   └── PAR-5139.js
      ├── critical_functionality
      |   └── PAR-5140.js
      |   └── PAR-5141.js
      └── dated_functionality
          ├── OLD-90210.js
          └── OLD-NO7-BRAND-SOUR-MASH.js
    

    要启用逻辑,您的命令将变为:npm run test:live -- --group current_functionality

    group 开关将列表作为参数,因此您可以在同一命令中链接多个测试文件夹:npm run test:live -- --group current_functionality,critical_functionality

    !注意:别忘了,您还可以使用--skipgroup 开关(也可以链接起来排除一系列测试文件夹) .您还可以使用'disabled' 属性来专门禁用测试运行中的测试用例true

    module.exports = {
      '@disabled': true, // This will prevent the test module from running.
      'Not running this PAR': function (browser) {
        // > your code here <
      }
    };
    

    【讨论】:

    • 好东西,这正是我想要的。非常感谢您的帮助@iamdanchiv
    【解决方案2】:

    给出的路径是问题所在。 路径必须相对于根。在相对路径的情况下,它们是相对于根(package.json 位于顶层)选择的。

    如果目录结构是:

    root
    --tests
    ----PAR-5139.js
    ----
    --src
    --config
    ----nightwatch.config.json
    --package.json
    

    无论您是从测试文件夹内还是根文件夹内运行命令,该命令都是npm run test:live ./tests/PAR-5139.js

    在您的情况下,该命令是从测试文件夹运行的,并且还给出了相对于测试文件夹的路径,但该命令正在查找相对于根目录而不是测试文件夹的文件。

    希望对您有所帮助。如有任何疑问,请回复。

    【讨论】:

    • 非常感谢@Sunil 提供的信息,我将在其他一些测试中使用它。
    猜你喜欢
    • 1970-01-01
    • 2013-07-11
    • 1970-01-01
    • 1970-01-01
    • 2010-09-25
    • 2011-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多