系列内容
- web自动化测试框架-01 搭建基础架构并运行一个样例
- web自动化测试框架-02 快速开发用例文档脚本
- web自动化测试框架-03 介绍标签,背景,场景,场景大纲
- web自动化系列教程- 04 Hooks与TimeOut介绍
- web自动化测试框架-05 创建数据驱动的测试用例,Doc String与Data Table
- web自动化测试框架-06 如何快速编写自动化脚本
备注:配合免费视频教程,获取更佳的学习效果!课程链接: ke.qq.com/course/2815…
主要内容
- 标签
- 背景
- 场景
- 场景大纲
配合免费视频教程,获取更佳的学习效果!课程链接:
标签
通过为不同的feature或者场景添加标签,帮助我们为不同的测试用例归类,例如,可以让我们运行某些指定标签下的测试用例。
我们可以在 Feature
Scenario
Scenario Outline
Example
关键字上面添加标签。
标签格式为@xxxx
,多个标签之间以空格隔开。具体使用会在下面介绍样例中体现。
feature文件包含三种类型的场景,分别为:背景、场景、场景大纲,下面我们逐一说明。
背景(Background)
背景是三种场景类型中的一种,与我们在写测试用例中的前提条件类似,都是定义了我们操作其它场景的前置运行步骤。
背景的英文关键字为 Background,标签不能添加到背景上,而且一个feature文件中最多只能有一个背景。背景在整个feature文件中的运行顺序为:每个场景运行之前都会运行背景中定义的操作步骤。如下为背景的样例:
Background: 用户登录
Given 导航到用户登录页面
When 用户名输入"testuser3"
And 密码输入"123456"
And 登录系统并显示用户名"testuser3"
复制代码
场景(Scenario)
场景与我们熟悉的测试用例中的场景一样,主要描述我们某个运行场景的操作步骤。
场景的英文关键字为Scenario,我们可以为场景添加标签。一个feature文件中可以定义多个场景。如下为场景的样例:
@smoke
Feature: 话题相关操作
@topic @post
Scenario: 用户登录并发布一个话题
Given 导航到用户登录页面
When 用户名输入"testuser3"
When 密码输入"123456"
Then 登录系统并显示用户名"testuser3"
Then 打开发布话题按钮
When 选择板块"分享"
Then 输入标题"node.js是全栈工程师首选语言"
Then 输入正文"node.js能够帮助我们快速实现各种功能!"
Then 点击提交,"成功"校验点"node.jss是全栈工程师首选语言"
复制代码
场景大纲(Scenario Outline)
场景大纲主要是在场景的基础上添加了数据驱动,可以让场景根据不同的数据执行场景。举个例子:在测试登录时,需要测试不同的场景,比如登陆成功,用户名不存在登录失败,密码不正确登录失败等。场景大纲就是为了解决这种需要诞生的。
场景大纲的英文关键字为Scenario Outline
,使用场景大纲的时候必须跟Example
配合使用,Example 中定义了不同的数据驱动,场景大纲运行时会依次来取其中数据内容 。如下:
@login
Scenario Outline: 用户名密码登录01
Given 导航到用户登录页面
When 用户名输入"<username>"
When 密码输入"<password>"
When 点击登录按钮
Then 应该登录"<status>",校验点为"<checkpoint>"
Examples:
| username | password | status | checkpoint |
| testuser3 | 123456 | 成功 | testuser3 |
| | 123456 | 失败 | 信息不完整。 |
| 123456 | 123456 | 失败 | 用户名或密码错误 |
| P@@@$$w0rd | 123456 | 失败 | 用户名或密码错误 |
@performance
Examples:
| username | password | status | checkpoint |
| testuser3 | 123456 | 成功 | testuser3 |
| testuser3 | 123456 | 成功 | testuser3 |
| testuser3 | 123456 | 成功 | testuser3 |
| testuser3 | 123456 | 成功 | testuser3 |
复制代码
如上所示:我们定义了一个用户登录的场景,在 Example 中定义了不同的数据,默认场景执行时候会依次读取数据进行自动化操作。上例中我们定义了两个 Example 共8组数据,当执行这个场景大纲时,程序会执行8次,自上而下依次取每行数据。
一个场景大纲中根据不同需要可以添加多个 Example 每个 Example 根据不同使用场景也可以添加不同标签。
一个feature文件中可以添加多个场景大纲。
小结
上面介绍了 背景, 场景,场景大纲之间的一些区别,下面通过一个实例来指导如何在工作中书写feature文件。
以常用的社区发帖为例,发帖操作前提是我们用户登录到系统,所以用户登录操作可以写在 Background 中,发帖功能又有不同的场景,可以定义为 Scenario Outline ,如下:
@smoke
Feature: 用户发帖
发帖不同场景
Background: 用户登录
Given 导航到用户登录页面
When 用户名输入"testuser3"
And 密码输入"123456"
And 登录系统并显示用户名"testuser3"
Scenario Outline: 发布话题
Then 打开发布话题按钮
When 选择板块"<tab>"
Then 输入标题"<title>"
Then 输入正文"<content>"
Then 点击提交,"<status>"校验点"<checkpoint>"
Examples:
| tab | title | content | status | checkpoint |
| 分享 | node.js | node.js is the best language | fail | 标题字数太多或太少。 |
| | i love node.js | node.js is the best language | fail | 必须选择一个版块! |
| 问答 | i love node.js | | fail | 内容不可为空 |
| 分享 | i love node.js | node.js is the best language | success | i love node.js |
复制代码
要更好的了解这些语法,推荐大家使用CukeTest cuketest.com/ 可视化界面编辑feature文件,有智能提示,确保生成格式正确的feature文件。另外,CukeTest可以快速帮助我们切换关键字语言,例如上面场景都是用英文关键字,可以一键转换成中文。并且它支持由feature文件生成自动化代码。
获取更多信息,可以关注公众号,也可以加QQ群:707467292 进行node.js自动化相关技术交流。