软件测试用例包括_白盒测试用例
测试用例分层
每个测试用例都有1个或多个测试步骤(List[step]),每个测试步骤对应一个API请求或其他用例的引用。
从上图分析,我们可以看到testsuite中包含了3个测试用例,testcase1
中有4个请求和一个步骤teststep12
,其中步骤teststep12
依赖testcase2,testcase2中的步骤teststep22
又依赖于testcase3。
举例说明:模仿上面的用例,我们也写3个用例
- testcase1:以最便宜的价格购买一瓶可口可乐(testcase1中的其中一个步骤需要调用testcase2)
- testcase2:查询价格最低的250ml可口可乐,并进入首页(testcase2中的其中一个步骤需要调用testcase3)
- testcase3:登录用户user1成功
注意
为了简单,在HttpRunner v2.x中的API概念已经被取消了。你可以将API定义为只有一个请求步骤的测试用例。
测试用例的分层思想:
- 测试用例(testcase)应该是完整且独立的,每条测试用例应该是都可以独立运行的
(重要)
- 测试用例是测试步骤(teststep)的有序集合
- 测试用例集(testsuite)是测试用例的无序集合,集合中的测试用例应该都是相互独立,不存在先后依赖关系的,可以无序执行
RunRequest
teststeps = [
Step(
RunRequest("get with params")
.with_variables(
**{"foo1": "bar11", "foo2": "bar21", "sum_v": "${sum_two(1, 2)}"}
)
.get("/get")
.with_params(**{"foo1": "$foo1", "foo2": "$foo2", "sum_v": "$sum_v"})
.with_headers(**{"User-Agent": "HttpRunner/${get_httprunner_version()}"})
.extract()
.with_jmespath("body.args.foo2", "foo3")
.validate()
.assert_equal("status_code", 200)
.assert_equal("body.args.foo1", "bar11")
.assert_equal("body.args.sum_v", "3")
.assert_equal("body.args.foo2", "bar21")
),
从上述代码可知,teststeps中的RunRequest
用于发送API请求和对响应结果进行提取和断言
下面详细介绍里面各个方法的作用
RunRequest(name)
RunRequest的参数名用于指定teststep名称,它将显示在执行日志和测试报告中。
RunRequest("get with params")
这个步骤的名称就是get with params
.with_variables
设置测试步骤的变量。每个测试步骤的变量都是独立的,如果想在多个测试步骤中共享变量,需要在config variables中定义。
注意:如果config variables
和.with_variables里有重名的变量,那么当你引用这个变量的时候,Step变量会覆盖config变量。
.method(url)
设置http请求方法,比如get、post、put、patch、delete等等,后面再跟上路径
注意:如果base_url
在config中设置了,url只能是相对路径部分。
# 用get方法访问路径为/getTime(相对路径)
.get("/getTime")
# 用post方法访问路径id=3(绝对路径)
.post("http://www.baidu.com/getTime")
.with_params
设置url的query,以键值对的形式,相当于requests.request 中的params。
.with_params(**{"foo1": "$foo1", "foo2": "$foo2", "sum_v": "$sum_v"})
.with_headers
设置请求的headers,相当于requests.request 中的headers。
.with_headers(**{"User-Agent": "HttpRunner/${get_httprunner_version()}"})
.with_cookies
设置Http请求cookies,相当于requests.request 中的cookies。
.with_data
设置Http的请求Body,相当于requests.request 中的data。
.with_data("foo1=$foo1&foo2=$foo2&foo3=$foo3")
.with_json
设置Http请求json格式的Body,相当于requests.request 中的json。
.with_json({"foo1": "foo1", "foo2": "foo2", "foo3": "foo3"})
.extract
利用jmespath提取Json Response body内容,
.with_jmespath(jmes_path: Text, var_name: Text)
- jmespath: 目标元素的jmespath表达式,可以参考https://www.cnblogs.com/jiakecong/category/1929704.html
- var_name: 存储提取值的变量名,可以被后面的测试步骤引用。
.validate
断言,我们测试最终就是要验证接口返回是否符合预期。 格式:
assert_XXX(jmespath: Text, expected_value: ANy, message: Text="")
- jmespath: jmespath表达式,可以参考https://www.cnblogs.com/jiakecong/category/1929704.html
- expected_value: 指定期望值或变量,也可以调用方法
- message(optional): 用于描述断言失败原因
下图展示HttpRunner内置断言:
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/165095.html原文链接:https://javaforall.cn
相关文章
- 妥妥的世界第一:为什么MT4软件的地位无法撼动?
- Hype 4 Pro for Mac(HTML5动画制作软件) v4.1.12中文版
- An软件如何下载 Adobe Animate 一键安装--AN软件下载完整版
- Photoshop 2021软件安装教程(windows+mac全版本,包括2023版本)
- 最新版本Photoshop CC2018软件安装教程(mac+windows全版本都有,包括2023
- Photoshop CC 2017安装教程 PS全版本软件下载地址(包括最新的2023)
- Photoshop 2018软件安装教程,PS全版本软件下载地址(包括最新的2023)
- Adobe Photoshop CC2018软件安装教程 PS全版本软件下载地址(包括最新的2023
- 【MAC】PS2021软件安装包+安装教程 PS全版本软件下载地址(包括最新的2023)
- 移动硬盘数据丢失能恢复吗 移动硬盘数据恢复用什么软件
- Ps2021软件安装教程win PS全版本软件下载地址(包括最新的2023)
- PS软件装不上,告诉你一个问题PS全版本软件下载地址(包括最新的2023)
- 钢笔工具—PS矢量蚊子组成的APP图标PS全版本软件下载地址(包括最新的2023)
- 2020PS一键安装来啦,你下载了吗?PS全版本软件下载地址(包括最新的2023)
- 编译过程中的并行性优化(三):软件流水线化与SIMD技术
- 业务-研发一体化,助力中国软件行业更新
- 妙用Ps计算工具调出另类色调PS全版本软件下载地址包括最新的2023
- XD软件下载:Adobe XD矢量化图形规划软件安装教程-Adobe全-家桶怎么获取
- mallox勒索病毒数据恢复|金蝶、用友、管家婆、OA、速达、ERP等软件数据库恢复
- 数据统计分析软件SPSS 27中文版下载安装,SPSS软件激活版下载
- 专业科研绘图 Origin 软件2022安装包下载,Origin安装激活
- 物理场仿真研究 Comsol 软件安装包下载,Comsol 安装激活
- Sibelius西贝柳斯安装包下载安装指南,专业作曲打谱软件
- Linux下安装软件:一步一步指导(linux下安装软件)
- Linux下K3B烧录软件的使用(linuxk3b)
- Linux软件:从中断到重启(linux软件中断)
- 软件工程师应该多写文章
- YaBS 是一个企业资源计划软件,用来管理包括产品和联系人信息,功能包括采购需求、订单、发票和提醒,功能非常强大,支持各种兼容JDBC 的数据库,可扩展性很强。
- Linux下强大的视频编辑软件(linux视频编辑软件)
- XMind 是一款跨平台的思维导图软件。
- Oracle软件带来的CDBC技术的巨大改变(oracle_cdbc)
- 黑莓软件存在漏洞却闭口不言 许多汽车恐被攻击