Testcafe命令行过滤测试正常但runner.filter失效如何解决?
TestCafe 编程式 runner.filter 元数据过滤不生效问题解决
问题原因
- 核心错误:
runner.filter()回调函数的入参顺序使用错误。TestCafe 官方定义的 filter 回调入参顺序为(测试用例名称, 测试套名称, 测试套文件路径, 测试用例元数据, 测试套元数据),你将第一个入参当做测试元数据使用,实际拿到的是字符串类型的测试用例名,不存在smokeTest属性,因此判断永远返回 false,所有测试都被过滤,触发报错:过滤设置已排除所有测试,请尝试修改过滤配置 - 代码语法错误:你贴出的测试代码存在引号未闭合问题
test.meta('smokeTest','true),正确写法应为test.meta('smokeTest','true'),若你命令行可以正常执行大概率是贴代码时的笔误;同时你的 test-runner 代码没有正确初始化 TestCafe 实例,直接调用未定义的testcafe变量也会导致逻辑异常。
修复方案
调整 test-runner 文件中 filter 回调的参数顺序,补全 TestCafe 实例初始化逻辑即可,修正后代码如下:
const createTestCafe = require('testcafe'); let testcafe = null; createTestCafe('localhost', 1337, 1338) .then(tc => { testcafe = tc; const runner = testcafe.createRunner(); return runner .src('./tests/fixture1.js') // 按官方定义取第四个入参为测试用例元数据 .filter((testName, fixtureName, fixturePath, testMeta) => { return testMeta.smokeTest === 'true'; }) .browsers('chrome') .run(); }) .then(failedCount => { console.log('测试失败用例数:' + failedCount); }) .finally(() => { testcafe.close(); });
内容的提问来源于stack exchange,提问作者Saly Subitsha
相关产品推荐
相关产品推荐

