在 CukeTest 最新版 1.6.0 中更新了一个新功能——链接示例表,能够将外部维护的测试用例数据文件直接链接到示例表中使用。
了解行为驱动(BDD)或Cucumber的同学都知道,长久以来,Cucumber里面的场景大纲可以通过内嵌的数据表来驱动。这也意味着每次修改数据需要手动编辑feature文件,改动示例表的数据。在持续集成越来越普及的今天,很多用户倾向于将数据独立维护。因此原来内嵌feature文件的方式会有使用上的不便。上述的新功能是针对BDD/Cucumber的重要革新,解决了数据维护使用上的问题。
同时它的出现使得场景大纲这一自动化测试常用的概念获得了更广泛的能力——使用动态数据驱动自动化操作:当你需要增删自动化操作时,只需要修改外部的表格文件即可,无需修改任何代码或feature文件。
那么首先让我们简单了解一下链接示例表在测试用例方面的应用,然后再来了解如何使用链接示例表的自动化操作管理能力吧!
示例表如何作用于测试
示例表是场景大纲的数据部分,由于场景大纲适合用于这样的场景:测试中需要大量同样的操作来验证在被测应用中的结果是否正确。比如针对登录、注册界面的后端校验数据。这样的场景如果使用常规的场景和步骤来实现,需要写非常多重复的内容,维护起来也相当的费力。以一个简单的加法场景说明,将加号两边的数字以及预期加法结果放到示例表中,代码中计算两数之和,再与预期结果相比较。那么示例表呈现如下效果:
示例表
而其对应的场景大纲定义如下:
场景大纲
在项目运行时,表中的每一行数据都会作为参数与场景大纲组合成一个场景,比如以上示例表中共有三行数据,运行时就会解析为三个场景来运行,部分报告截图如下:
场景大纲运行结果
运行结果中有一个场景发生了错误,是因为示例表中第三行本身的数据就是无法通过测试的,即反面用例。
在先前的 CukeTest 版本中,示例表已经支持编辑以及数据的导入导出,但仍然不足以满足用户的某些需求,比如拥有大量不同常见的测试用例表的情况,需要反复的导入新的数据。而现在,只要改用链接示例表就可以满足这些需求了!
将链接示例表用于 Web 自动化测试
下面我们将链接示例表用于 Web 测试,被测应用是一个简单的网上点单页面,实现一个简单的点单功能验证,场景与步骤的定义如下:
您应该注意到,对于普通的场景大纲而言,数据是嵌入在feature文件里的。而这里,我们使用了“#data_source: support\web.csv”直接引用了这个csv文件,而这个文件的内容如下:
通过链接到外部文件作为示例表,能够非常灵活的进行用例管理。步骤定义的代码如下:
这里用到了两次 xpath 选择器的方法,能够找到指定内容的元素,非常适合配合用例中比较易读的数据形式,比如在本次的场景中,要修改下拉框中不同的容量,那么在样例中,相比与维护选中第 N 个容量,还是直接维护容量的规格更合适,因为列表的顺序在很多时候都是不够可靠的。特别是针对、、这种通常可用的其它属性不丰富的标签。
本个例子中验证的是点单功能,如果读者有兴趣可以复制源码,自行尝试一下验证库存功能。这里为了用户复制方便,直接使用了feature文件的源码。实际使用时,在CukeTest中可以在可视化视图中通过点击,直接添加链接示例表。
将链接示例表用于内容爬取
CukeTest 作为一个自动化测试的开发工具,也能够适用于很多其它的自动化场景,在结合链接示例表以后,其能够覆盖的场景更多了,并且更加的实用了。下面我们同样以建立内容聚合平台的自动爬取为例,(参考历史文章:教你搭建自己的内容聚合网站)。相信还有部分读者对它使用 Puppeteer 搭建内容聚合平台的文章有印象,这次我们换 Selenium 为引擎,实现自动抓取指定网站中的搜索结果。
相比于之前那篇文章的实现,加入链接示例表后,爬取的网站不再需要在feature代码中维护,而是直接在数据文件中添加网站链接即可。
先让我们来看一下链接示例表的文件:
抓取网站的 csv
需要注意的是这一列,其中的作为搜索关键词的占位符,场景运行中会替换为完整的搜索链接,直接跳转到搜索结果的页面。(使用作为搜索关键词的占位符的语法借鉴了 Chrome 创建自定义搜索引擎的语法,感兴趣的读者可以了解一下。)
接着是跟两列,前者是找每条搜索结果的元素,后者找解析搜索结果中的标题(通常也是指向搜索结果的链接)。这种先找大块的内容,再解析每一块内容得到想要的数据,是爬虫常用的一种技巧。
通过这样的一张表,很好的将爬虫管理了起来,对于大部分的网站都够用了,下面让我们看看如何针对这张表定义场景跟步骤描述:
步骤定义如下:
在抓取结束后,将抓取到的内容保存到本地的表格文件中以供其它用途,运行结果生成的文件内容如下:
爬取结果
这个爬虫中所有的搜索结果都是简单的写入到已有的表格中之后,没有进行去重的操作,感兴趣的读者同样可以下载源码完善这一功能。
总结
那么以上就是链接示例表这一新功能在不同场合的应用实例,除了以上两种代表性的场合,API 测试也是它适合的领域,当然这个项目可以直接从 CukeTest 中的样例来创建一个 API 测试项目来学习。回到开头提到的,作为对Cucumber.js的增强,链接示例表的新功能大大强化了 CukeTest 完成这种数据驱动的测试的能力,让您的自动化测试更得心应手。
领取专属 10元无门槛券
私享最新 技术干货