系列内容
- web自动化测试框架-01 搭建基础架构并运行一个样例
- web自动化测试框架-02 快速开发用例文档脚本
- web自动化测试框架-03 介绍标签,背景,场景,场景大纲
- web自动化系列教程- 04 Hooks与TimeOut介绍
- web自动化测试框架-05 创建数据驱动的测试用例,Doc String与Data Table
- web自动化测试框架-06 如何快速编写自动化脚本
备注:配合免费视频教程,获取更佳的学习效果!课程链接: ke.qq.com/course/2815…
主要内容
-
Doc String (文本字符串)
-
Data Tables(数据表)
配合免费视频教程,获取更佳的学习效果!课程链接:
https://ke.qq.com/course/281565?tuin=173f40be
前言
使用feature文件会在具体的操作步骤中描述业务,每个步骤一句话,但有时可能一句话不能完整的表述出所有的功能。这个时候需要使用到 Doc String 和 Table 。
-
Doc String(文本字符串)
在描述操作步骤时,如果需要指定的信息无法放在一行内,可以使用Doc String,也称为多行字符串。DocString用于指定较大的文本。文本应由放在一行的三个并列的双引号 """ 开始(注意是英文的双引号,不是中文的全角双引号):例如常见的发帖场景中可以将帖子的内容放到Doc String 中。

对应feature文本
# language: zh-CN 功能: 发表帖子 用户登录系统发布帖子 场景: 发布帖子 假如用户登录系统 当发布帖子内容并且点击发布按钮 """ 知识准备 环境准备 前端开发的历史演变 前端MVC框架的兴起 前后端分离 全栈工程师 前端开发的未来 Node 的基本用法 Restful API Express 框架搭建 Web 应用 持续集成 静态代码检查 单元测试 功能测试 持续集成服务 Travis CI """ 那么应该发布成功在js脚本,会自动把feature文件中的Doc String作为字符串变量传给函数
When(/^发布帖子内容并且点击发布按钮$/, async function (docString) { // 函数中的Doc String 会作为变量传给docString. }); -
Data Tables
单个步骤有时需要使用到数组数据或者对象数据,这时可以使用添加Data Tables。在对应的step下面 直接添加
| 数据 |即可。如下:
对应的文本:
Feature: use table datas Scenario: table datas Given the following people exist: | name | email | | Jason | jason@email.com | | Joe | joe@email.com | | Zark | zark@email.org |在js代码中,Cucumber 对Table数据提供 4 解析方法:
-
数据中不包含标题
-
hashes() : 返回一个包含每一行数据作为对象的数组(标题作为对象的key)
-
rows(): 返回一个二维数组: 除了第一行数据,其余每一行数据为一个数组
-
-
数据中包含标题
-
raw(): 将表单作为二维数组返回
-
rowsHash(): 将每行数据作为实例返回一个对象(第一行为key,第二行为value)
为更好理解这四种方法,我们可以将数据打印出来对比。
js代码如下:
const { Given } = require('cucumber') Given(/^the following people exist:$/, async function (table) { // hashes() console.log("hashes:", table.hashes()) // rows() console.log("rows:", table.rows()) // raw() console.log('raw:', table.raw()) // rowsHash() console.log('rowHash:', table.rowsHash()) });打印结果:
hashes: [ { name: 'Jason', email: 'jason@email.com' }, { name: 'Joe', email: 'joe@email.com' }, { name: 'Zark', email: 'zark@email.org' } ] rows: [ [ 'Jason', 'jason@email.com' ], [ 'Joe', 'joe@email.com' ], [ 'Zark', 'zark@email.org' ] ] raw: [ [ 'name', 'email' ], [ 'Jason', 'jason@email.com' ], [ 'Joe', 'joe@email.com' ], [ 'Zark', 'zark@email.org' ] ] rowHash: { name: 'email', Jason: 'jason@email.com', Joe: 'joe@email.com', Zark: 'zark@email.org' }table的引入让测试脚本更好的支持数据驱动。在CukeTest中,对table的编辑非常方便,例如,可以通过csv导入数据表:
以及其他操作如双击编辑数据表,或者导出数据表等等操作。
-
获取更多信息,可以关注公众号,也可以加QQ群:707467292 进行node.js自动化相关技术交流。
