【问题标题】:How to pass suite name as a parameter in command line如何在命令行中将套件名称作为参数传递
【发布时间】:2021-10-04 05:45:34
【问题描述】:

尝试使用 runner 方法执行冒烟/回归测试。但是需要在“node testrunner.ts”命令行中通过Smoke and Regression。参考以下代码:

const createTestCafe = require('testcafe');
var argv = require('minimist')(process.argv.slice(2));
let suite = argv.suite;
const browser = argv.browser;
let testcafe = null;
let runner = null;
createTestCafe('localhost', 1337, 1338)
.then(tc => {
testcafe = tc;
runner = testcafe.createRunner();
return runner
.browsers(['chrome --window-size=1440,900'])
.filter((testName, fixtureName, fixturePath, testMeta, fixtureMeta) => {
suite = {
smoke: fixtureMeta.Smoke === 'true',
regression: fixtureMeta.Regression === 'true',
};
return suite;
})
.reporter('list')
.run();
})
.then(failedCount => {
console.log('Tests failed: ' + failedCount);
testcafe.close();
})

使用node testrunner.ts --suite=regression执行上述代码 但它执行包中的所有测试,包括烟雾测试用例。从命令行传递时,请告诉我如何使用各自的套件名称执行测试用例。

【问题讨论】:

    标签: node.js testing automated-tests e2e-testing testcafe


    【解决方案1】:

    根据 TestCafe 文档,您传递给 filter 方法的回调函数会为源文件中的每个测试调用。要包含当前测试,它应该返回 true,排除它 - false。

    代码示例中的回调函数始终返回suite 变量,并且它始终包含一个非空值,JavaScipt 将其转换为true。这就是为什么 TestCafe 会执行您的测试套件中的每个测试。

    要达到预期的行为,请尝试按以下方式重写回调函数:

    ...
    .filter((testName, fixtureName, fixturePath, testMeta, fixtureMeta) => {
       return suite === 'regression' && fixtureMeta.Regression === 'true';
    })
    ...
    

    【讨论】:

      猜你喜欢
      • 2020-12-30
      • 2010-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-21
      • 1970-01-01
      • 2015-09-12
      • 2013-04-02
      相关资源
      最近更新 更多