写在之前
之前项目里面遇到这个问题,使用testcafe测试项目上的功能,因为是才接触自动化测试,使用起来还是有很多不明白的地方,目前网上关于testcafe使用方法基本都是非常官方的使用方法,千篇一律。所以在解决了这个问题后我决定写一篇随笔。第一次写这种,不足之处大家多多包涵。欢迎交流。
项目中使用runner文件运行testcafe
testcafe的官方文档:https://devexpress.github.io/testcafe/documentation/using-testcafe/programming-interface/runner.html
另外在之前使用的过程中米阳的简书:https://www.jianshu.com/p/94181abe5e9a也给我很大的帮助
安装
npm install -g testcafe
先全局安装testcafe
优点
使用runner的优势在于不需要在运行命令是在后面加上很多的属性,而且便于管理
用过testcafe的都知道想要控制测试的运行速度出了在js里面使用setTimeSpeed控制之外,还可以使用testcafe chrome xxx.js -speed 0.2 这种来控制测试的整体速度。而使用runner则不需要这种操作,直接在runner.js里面设置就行了,特别是设置的属性有很多的时候。
使用
- 新建
在项目文件夹下创建三个文件夹:test、runner、error
test文件夹里面放需要测试的js文件
runner文件夹里面就是本篇介绍的主要内容
error文件夹则是配合runner来保存测试错误文件的截图 - 编写runner文件
在runner文件夹下新建runner.js
内容如下:
const createTestCafe = require("testcafe");
let testcafe = null;
createTestCafe("localhost", 1337, 1338)
.then(tc => {
testcafe = tc;
const runner = testcafe.createRunner();
return (
runner
.src([
"./test/xxx.js",
"./test/xxxx.js",
"./test/xxxxx.js"
])
.browsers(["chrome","fireFox"])
// 错误自动截图
.screenshots(
// 保存路径
"./error/",
true,
// 保存路径格式
"${DATE}_${TIME}/${FIXTURE}/${TEST}/${USERAGENT}/${FILE_INDEX}.png"
)
.run({
skipJsErrors: true, //跳过页面JS报错
selectorTimeout: 5000, // 设置页面元素查找超时时间,智能等待
assertionTimeout: 5000, // 设置断言超时时间
pageLoadTimeout: 15000, // 设置页面加载超时时间
debugOnFail: true, // 失败开启调试模式 脚本编写建议开启
quarantineMode: true, //隔离模式,若果失败则重新测试,最多三次
speed: 1 // 执行速度0.01 - 1
})
);
})
.then(failedCount => {
console.log("测试失败个数: " + failedCount + "个");
testcafe.close();
})
.catch(err => {
console.error(err);
});
runner.js中
scr里面放的是需要测试的脚本js
browsers里面放的是测试的浏览器
screenshots就是屏幕截图
run则是在脚本运行时的一些属性,例如运行速度、等待时间、多并发等等。具体的属性可以在参考链接中查看
运行
node runner/runner.js
关于运行这个runner文件的命令我刚开始使用的使用找了整整半天,网上没有一个地方有它的身影。这个命令完全是我测出来的,真是奇迹。
结语
第一次写随笔,肯定有很多废话,哈哈,以后有时间我也会写写其他的,喜欢就点个关注吧。