您当前的位置: 首页 >  自动化

自在的旅者

暂无认证

  • 0浏览

    0关注

    695博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

web 自动化神器 TestCafe —— 用例运行篇

自在的旅者 发布时间:2021-08-07 19:21:52 ,浏览量:0

今天我们一起来了解一下如何运行测试用例,以及运行测试时的相关配置项。 在这里插入图片描述

指定用例运行

运行方法

关于 TestCafe 运行用例,支持以下两种方法

  • 命令行运行
// testcafe  运行的浏览器   用例文件路径
testcafe chrome ./tests/demo.js
  • 通过 Runner 运行
const TestCafe = require('testcafe');
const testCafe = await TestCafe('localhost', 1337, 1338);
try {
    const Runner = testCafe.createRunner();
    await Runner
        .src('./tests/my-fixture.js')
        .browsers('safari')
        .run();
}
finally {
    await testCafe.close();
}

指定多个文件或目录运行

如果是命令行运行,在指定运行路径的时候,写上多个路径即可。

如果是通过 Runner 执行,在使用 src 指定运行路径是传入一个包含多个路径的数组即可。

await runner
.browsers('safari')
.src(['./goods-tests/demo1.js', 
'./user-tests/demo2.js'])
.run();

运行指定的测试用例

在指定测试文件运行的时候,TestCafe还支持指定测试用例名来执行测试。

命令行运行是可以通过参数 -t 来指定运行的用例名,如果通过 Runenr 来执行,则可以通过 Runner.filter 方法的 testName 参数去进行过滤

  • 命令行运行
// 通过运行demo.js文件中,用例名为login的用例
testcafe chrome ./tests/demo.js -t "login"

  • Runner 运行
- await runner
.browsers('safari')
.src('./tests/demo.js')
.filter(testName => testName === 'login')
.run();

运行指定的 fixtrue

如果要运行文件中指定fixtrue,命令行运行是可以通过参数 -f 来指定运行的用例名,如果通过 Runenr 来执行,则可以通过 Runner.filter 方法的 fixtureName 参数去进行过滤。

  • 命令行运行
testcafe firefox ./tests/demo.js -f "Loginfixture"
  • Runner 对象运行
await runner
.browsers('firefox')
.src('./tests/demo.js')
.filter((testName, fixtureName) => {
fixtureName === 'Loginfixture'
})
.run();
浏览器运行的配置

testcafe 在运行测试是需要手动去指定运行的浏览器,命令行运行时,直接把浏览器名字添加在 testcafe 后面即可,通过 Runner 对象运行则可以通过 browsers 来指定运行的浏览器。

同时多个浏览器运行

在运行测试的时候,TestCafe支持使用多个浏览器同时。

  • 在命令行中多个浏览器中运行测试。以逗号分隔的浏览器列表
testcafe safari,chrome ./tests/
  • 通过 Runner 运行,将浏览器标识符数组传递给 Runner.browsers
await runner
    .browsers(['safari', 'chrome'])
    .src('./tests/')
    .run();

  • 使用电脑上所有安装的浏览器一起运行测试

指定浏览器时使用 all ,testcafe 会自动检查所有本地安装的浏览器,同时运行测试。指定浏览器时使用 all ,testcafe 会自动检查所有本地安装的浏览器,同时运行测试。

testcafe all ./tests/
await runner
    .browsers('all')
    .src('./tests/')
    .run();

无头模式运行

TestCafe 可以在支持它的浏览器中以无头模式运行测试。要以无头模式运行测试,请将 :headless 后缀放在浏览器名称即可。

  • 命令行运行
testcafe firefox:headless ./tests/
  • Runner 运行
await runner
    .browsers('firefox:headless')
    .src('./tests/')
    .run();

模拟移动设备运行

TestCafe 支持使用 Chrome 浏览器移动设备来模拟移动设备布局和功能。指定 :emulation 后缀,后跟仿真选项。

await runner
    .browsers('chrome:emulation:device=iphone X')
    .src('./tests/sample-fixture.js')
    .run();
测试报告

关于测试报告的生成,TestCafe 自带了五种基本的报告器,分别为 spec、list、minimal、JSON、xUnit。同时也支持自己安装其他的报告程序插件,也可以自定义报告器。

指定报告器

关于测试测试报告的生成,在命令行中使用 -r 参数,并在 API 中使用 Runner.reporter 方法来指定要使用的报告器。

  • 命令行运行
testcafe all ./tests/sample-fixture.js -r xunit
  • Runner 运行
await runner
    .browsers('all')
    .src('./tests/sample-fixture.js')
    .reporter('xunit')
    .run();

注意点:如果要指定输入报告文件名, 在命令行中在分号后或在 Runner.reporter 中将其指定为第二个参数即可。

并发运行

TestCafe 支持并发执行测试。

在并发执行的模式下,TestCafe 为浏览器创建多个实例对象,这些浏览器的实例构成一个运行测试的浏览器池,每个测试都会获取浏览器池中的一个可用实例。

关于并发执行模式的开启, 使用 -c 命令行选项或 Runner.concurrency 方法。

注意点: 执行测试时,Edge 浏览器不支持并发测试执行

  • 命令行开启并发执行
testcafe -c 3 chrome tests/test.js
  • 通过 Runner.concurrency
var testRunPromise = runner
    .src('tests/test.js')
    .browsers('chrome')
    .concurrency(3)
    .run();
实时模式运行

实时模式可以在进行测试时 TestCafe 和浏览器保持活动状态。

在启用实时模式的情况下运行测试时,TestCafe 将打开浏览器,运行测试,显示报告,并等待进一步的操作。

然后 TestCafe 开始监视测试文件及其中引用的所有文件中的更改。在任何这些文件中进行更改并保存后,TestCafe 会立即重新运行测试。

实时模式的开启

  • 通过命令行启动
testcafe chrome tests/test.js -L
  • 通过 Runner 运行 ,使用 testcafe.createLiveModeRunner 创建一个运行器,代替的常规测试运行。
const createTestCafe = require('testcafe');
const testcafe = await createTestCafe('localhost', 1337, 1338);
try {
const liveRunner = testcafe.createLiveModeRunner();
await liveRunner
.src('tests/test.js')
.browsers('chrome')
.run();
}
finally {
await testcafe.close();
}

实时模式下的控制台快捷方式

Ctrl+S ——停止当前的测试运行;

Ctrl+R ——重新开始当前的测试运行;

Ctrl+W ——关闭/打开文件观察器;

Ctrl+C ——关闭打开的浏览器并终止该过程。

隔离模式运行

隔离模式旨在将非确定性测试(即,在没有任何明显原因的情况下通过和失败的测试)与其他测试隔离开来。

启用隔离模式后,将根据以下逻辑运行测试:

1、首次运行测试。如果通过,则 TestCafe 继续进行下一个测试。

2、如果测试失败,它将再次运行,直到通过或失败三次。

3、如果多次运行结果不一样,以最频繁的结果记录为测试结果。

4、如果两次测试之间的测试结果不同,则将测试标记为不稳定。

  • 命令行开启隔离模式,使用参数 -q
testcafe chrome ./tests/ -q
  • Runner.run 方法中的 quarantineMode 选项启用隔离模式
await runner
    .browsers('chrome')
    .src('./tests/')
    .run({ quarantineMode: true });

关于 TestCafe 测试用例运行就给大家分享到这里,后续会持续更新 TestCafe 系列的教程,欢迎继续关注~

最后,下面是我整理出来的一份软件测试工程师发展方向知识架构体系图。

希望大家能在这个成长过程中收益良多。可以说,这个过程会让你痛不欲生,但只要你熬过去了。以后的生活就轻松很多。正所谓万事开头难,只要迈出了第一步,你就已经成功了一半,古人说的好“不积跬步,无以至千里。”等到完成之后再回顾这一段路程的时候,你肯定会感慨良多。

由于CSDN上传图片大小有限,有需要的朋友可以关注我的公众号:程序员二黑,回复1,即可获取原图。

下面是一份配套的软件测试资源包: 上面是一些配套资源,对于软件测试的的朋友来说应该是最全面最完整的备战仓库,为了更好地整理每个模块,我也参考了很多网上的优质博文和项目,力求不漏掉每一个知识点,很多朋友靠着这些内容进行复习,拿到了BATJ等大厂的offer,这个仓库也已经帮助了很多的软件测试的学习者,希望也能帮助到你。

关注我的微信公众号:程序员二黑,即可免费获取!

最困难的时候,也就是我们离成功不远的时候!如果你不想再体验一次自学时找不到资料,没人解答问题,坚持几天便放弃的感受的话,可以加入我们的群:785128166 大家一起讨论交流学习。

推荐阅读

高薪程序员也躲不过35岁这一关…当能力与年龄脱节,我们该如何自救?

清华学姐熬了一个月肝出这份32W字Linux知识手册,在 Github标星31K+

字节跳动软件测试岗,前两面过了,第三面HR天坑!竟然跟我说……

关注
打赏
1665557745
查看更多评论
立即登录/注册

微信扫码登录

0.0383s