如何在 inern 4 中传递自定义参数

How to pass custom argument in inern 4

我一直在开发我的产品的实习生自动化测试。我为此使用了实习生版本 3。但是自从 intern 的版本 4 到了,我就试着熟悉它。现在我的问题是如何将自定义参数传递给实习生 4。我是实习生 3,我曾经像这样通过启动命令传递它

node_modules/intern/runner.js config=/Automation/intern -leaveRemoteOpen arg1=arg1 arg2=arg2

并使用 inter.args.arg1.

捕捉这些参数

但是因为在实习生 4 中我开始使用 npm test 命令进行测试,所以我无法弄清楚如何传递自定义参数以及如何在代码中捕获它,因为实习生 4 使用打字稿。

我今天花了一些时间来解决这个问题,希望能实现您的要求。

我已经在我的工作场所和我自己的独立项目中使用 Intern 4 构建了我自己的自动化框架,但没有意识到这种事情已经通过 Intern 4 变得如此复杂。

就目前而言,我通过以下解决方案实现了您正在寻找的结果。

我是 运行 我的实习生功能套件,就像您已经描述的那样,通过自定义 npm 脚本。我已将我自己的脚本添加到我的 package.json 文件中,并发送两个参数,我将它们称为 myArg1myArg2 仅用于此示例。

所以我的package.json脚本如下:

"scripts": {
    "test-ui": "./node_modules/.bin/intern config=/path_to_my_intern.json_config myArg1 myArg2"
}

现在我可以使用 npm run test-ui 来执行它了。

那么如何在实习生测试中检索这两个参数呢?您可以使用以下内容:

process.argv[3]; // Will return 'myArg1'
process.argv[4]; // Will return 'myArg2'

基本上,process.argv 的使用将 return 所有参数的数组,我的另外两个参数在索引 3 和索引 4 处传入。你会在某处找到你的命令行参数该数组(可能与我的索引位置相同)。

希望对您有所帮助!

实习生 4 将像实习生 3 一样接受任意配置参数;他们只是访问有点不同。在实习生 4 中,您使用 intern.config 对象而不是 intern.args。例如,使用命令行:

$ npx intern foo=bar

一个 JS 测试可以访问参数 foo:

'some test'() {
    const foo = intern.config.foo;
}

假设您使用的是 TypeScript,您需要将 intern.config 转换为 any 以获得自定义参数:

'some test'() {
    const foo = (<any>intern.config).foo;
}