系列内容
- web自动化测试框架-01 搭建基础架构并运行一个样例
- web自动化测试框架-02 快速开发用例文档脚本
- web自动化测试框架-03 介绍标签,背景,场景,场景大纲
- web自动化系列教程- 04 Hooks与TimeOut介绍
- web自动化测试框架-05 创建数据驱动的测试用例,Doc String与Data Table
- web自动化测试框架-06 如何快速编写自动化脚本
备注:配合免费视频教程,获取更佳的学习效果!课程链接: ke.qq.com/course/2815…
主要内容
-
根据测试用例生成自动化脚本样例
-
测试用例与测试代码四种状态
配合免费视频教程,获取更佳的学习效果!课程链接: https://ke.qq.com/course/281565?tuin=173f40be
根据测试用例生成自动化脚本样例
Cucumber是将自然语言描述的测试用例跟自动化脚本结合起来运行的一个框架。在前面的Cucumber讲座中,我们探讨了如何使用行为驱动(BDD的方式来写测试场景,设置场景的运行时。我们的基础部分,即场景描述已经在feature文件中实现,现在为大家介绍如何实现自动化脚本部分。
在使用Cucumber.js默认运行方式中,我们在命令行中执行 cucumber 命令,如果Feature文件已经有对应代码实现,Cucumber会自动运行这些代码,否则,Cucumber会自动根据feature文件的测试步骤文本打印出对应的代码框架,然后用户需要将命令行输出的框架代码片段复制到自己的代码中。 这种Cucumber原生的操作方式使用起来略显复杂,这里为大家介绍一种更优雅的处理方式,就是使用我在之前教程中为大家推荐的CukeTest http://cuketest.com/ 下面一个动图说明:
使用CukeTest,在我们编辑完测试用例之后,只需要点击灰色按钮,自动会在js文件中一键生成步骤的框架代码,即步骤定义。
我们要做仅仅是在生成的脚本文件中实现这些样例即可。
测试用例与测试代码的四种状态
Cucumber标准的操作步骤有四种状态:
-
未定义
-
未实现
-
已经实现
-
重复实现
写完测试用例,要为这些用例生成对应的自动化代码。这些测试用例与自动化脚本的关系有如上的四种状态,使用默认的Cucumber,只能在运行的时候才能发现这些状态。在CukeTest编辑器中,直接提供了每个步骤的状态显示,方便用户的使用。下面使用这种更直观的可视化界面为大家解释。
- 未定义
有步骤文本,但是却没有对应的步骤定义代码,我们称之为 未定义 。在CukeTest中对应为操作步骤后面按钮为灰色状态。
未实现
这是指实现了测试步骤,步骤定义函数返回 pendding 的状态。 返回"pending" 表示这个函数还没有实现。CukeTest 操作步骤中后面按钮颜色为 橙色。
对应代码 为 pendding
Then(/^搜索结果中应该包含"([^"]*)"$/, async function (arg1) {
return 'pending';});
- 已经实现
即实现了操作步骤,步骤定义函数已经有具体实现。 CukeTest 操作步骤后面按钮颜色为绿色。
对应的自动化脚本有具体实现。
Given(/^浏览到搜索网站 "([^"]*)"$/, async function(url) {
await driver.get(url);
});
- 重复实现
对于某个操作步骤,有多个步骤定义函数与之对应,称之为重复实现。 重复实现是会报错的,因为在程序运行中不知道要匹配哪个步骤定义运行。 这里也提醒下: 我们可以使用多个操作步骤对应某一个步骤定义函数。但是反过来不能有多个步骤定义函数对应一个操作步骤。 重复实现会在CukeTest中操作步骤后面以红色按钮显示。
对应代码:
Then(/^搜索结果中应该包含"([^"]*)"$/, async function (arg1) {
//do something
});
Then(/^搜索结果中应该包含"CukeTest"$/, async function (arg1) {
//do something else
});
这两段代码虽然匹配表达式不相同,但是会同时匹配到上面的步骤文本。点击红色按钮,CukeTest会弹出对话框,显示哪段代码有引起了重复定义,并可以让你导航到对应的位置。
在开发过程中,脚本的步骤可能有这4种状态。一个已经完成的正确脚本,应该所有状态都是绿色的,即都已经实现。测试脚本大了,可能有多个feature文件,一个一个检查会比较麻烦。CukeTest提供了一键检查的机制,检查脚本常见的错误,包括JavaScript语法错误,上面4种状态等,点击如下的按钮就可以了:
获取更多信息,可以关注公众号,也可以加QQ群:707467292 进行node.js自动化相关技术交流。