欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

A04_开始于一个简单的测试用例

程序员文章站 2024-03-15 19:24:48
...

A04 _开始于一个简单的测试用例

 

HttpRunner 的测试用例支持两种文件格式:YAMLJSON

 

下面两张图就是编写的测试用例,完成的是同样的测试内容,完全等价。但明显右边用YAML编写的测试用例更加简洁,而且用 YAML 来编写 HttpRunner 的测试用例,学习成本也是极低的。后续的章节中,我们也是以 YAML 作为用例的编写方式。

 

 

两种测试用例格式的比较:

A04_开始于一个简单的测试用例

 

 

测试用例的基本结构(JSON)

在 HttpRunner 中一个独立的 JSON/YAML 文件即称之为一个测试用例。

一个 HttpRunner 的测试用例其实就是一个 基于 map 的 list,主体结构如下:

[
    { config:  .... },
    { test: .... },
    { test: .... }
]

 

其中:

  • config:是测试用例的全局配置区域。在此处可以定义测试用例的名称、设置HTTP请求的URL基本路径、设置全局变量等。
  • test:是测试用例中测试步骤的定义区域。一个测试用例中可用同时拥有多个测试步骤。每个步骤中可用单独定义步骤名称、请求的接口地址、请求方法、请求参数等内容。

 

 

编写访问百度测试用例

 

我们准备编写一个访问百度首页的测试用例:

  1. 新建一个 JSON 格式文件,编码格式为 UTF-8,文件命名:baidu.json
  2. 整个用例最外层首先是一个数组,理解时可以对应于 Python 中的 list 类型:[ ... ]
  3. 数组内放置两个对象 config 和 test,理解时可以对应于 Python 中的 dict 类型: { key: value },而且这里的 value 部分仍然是内嵌的一个对象。
[
	{
		"config": { ... }
	},

	{
		"test": { ... }
	}
]

 

 

逐步完善测试用例:

  1. 在config键对应的值(对象)中,增加name键值对,为整个测试用例命名
  2. 在test键对应的值(对象)中,增加name键值对,为当前测试步骤命名
[
	{
		"config": {
			"name": "测试用例:测试百度"
		}
	},

	{
		"test": {
			"name": "测试步骤-1:打开百度首页",
		}
	}
]

 

 

 

继续在测试步骤中增加请求内容:

  1. 在与 name 键值对并列位置,增加一个新的拥有发起HTTP请求的键值对,键值为 request(此名称为关键字,属于固定用法)
  2. 在request键对应的值中,继续嵌套一个新的对象,包括两个必选键值对:
  • url:关键字,指明请求的URL地址
  • method:关键字,指明请求的类型(GET/POST/DELETE/PUT等),注意,选择的请求类型所有字母必选大写,即 GET,不能写成 Get
[
	{
		"config": {
			"name": "测试用例:测试百度"
		}
	},


	{
		"test": {
			"name": "测试步骤-1:打开百度首页",

			"request": {
				"url": "https://www.baidu.com",
				"method": "GET"
			},
		}
	}
]

 

 

 

最后对请求返回的响应结果进行断言

  1. 在与 name 和 request 键值对并列位置,增加一个新的键值对,键值为 validate
  2. 对响应内容可以同时完成多个断言操作,这些断言需要封装在一个数组中,数组中的每项仍旧是由一个对象组成,即:"validate": [{断言1}, {断言2} ....]
  3. 增加一个最常用的断言,判断响应返回的状态码是否为200
  • eq:断言短语,代表是否相等(equals)
  • stauts_code:关键字,从响应中获取状态码,作为测试的实际结果
  • 200:作为测试的预期结果
[
	{
		"config": {
			"name": "测试用例:测试百度"
		}
	},


	{
		"test": {
			"name": "测试步骤-1:打开百度首页",

			"request": {
				"url": "https://www.baidu.com",
				"method": "GET"
			},

			"validate": [
				{ "eq" : ["status_code", 200] }
			]
		}
	}
]

 

 

用例各行解释如下图所示:

A04_开始于一个简单的测试用例

 

 

 

测试用例的验证

用例编写完成后,先不着急执行,验证一下书写的格式是否正确。打开命令行窗口,切换到测试用例文件(baidu.json)所在目录(在Win7系统中,可以在用例文件所在目录中,按下键盘Shift键,同时鼠标右键空白区域,在弹出菜单中选择“在此处打开命令行窗口”)。

A04_开始于一个简单的测试用例

 

 

在 hrun 命令的使用帮助中,有一个选项 --validate 专门用于验证用例格式是否正确

  • 命令: hrun --validate <测试用例文件名>

A04_开始于一个简单的测试用例

 

 

测试用例的执行

用例格式验证无误后,即可以开始执行测试用例了

  • 命令: hurn <测试用例文件名>

A04_开始于一个简单的测试用例

 

 

查看生成的测试报告

用例执行的结果会自动生成测试报告。测试报告会在用例相同目录下新建一个“reports”的文件夹,每次运行的结果会在该文件夹下自动新生成一个文件,该文件自动以时间命名(按GMT格林尼治时间,转化为北京时间+8小时即可)。

A04_开始于一个简单的测试用例

 

打开对应的测试报告,分“概要说明”和“详细说明”上下两部分,可以直接查看测试成功或失败的统计结果,也可以点击绿色“log”按钮,查看更详细的测试日志,即详细的请求内容,详细的响应内容、断言验证情况等。

A04_开始于一个简单的测试用例

 

 

查看每个测试步骤的详细日志:

A04_开始于一个简单的测试用例

 

 

补充:

JSON ( JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。在编写测试用例的时候,主要用到了“对象”和“数组”两种类型:

  • 对象:对象在 JS 中是使用花括号包裹 {} 起来的内容,数据结构为 {key1:value1, key2:value2, ...} 的键值对结构。
  • 数组:数组在 JS 中是方括号 [] 包裹起来的内容,数据结构为 ["x", "y", "z", ...] 的索引结构。