pytest(5)-断言
前言
断言是完整的测试用例中不可或缺的因素,用例只有加入断言,将实际结果与预期结果进行比对,才能判断它的通过与否。
unittest 框架提供了其特有的断言方式,如:assertEqual、assertTrue、assertIn等,pytest 同样有自己的断言方式,即使用assert进行断言。
assert
pytest 中使用python源生态assert字段进行断言。
常用断言方式
pytest常用的断言方式如下:
- 判断是否相等,assert Actual(实际结果) == Expected(期望结果)
- 判断是否不相等,assert Actual != Expected,其他如 >、<、>=、<= 都可直接使用。
- 判断xx是否为真,assert xx
- 判断xx是否不为真,assert not xx
- 判断b是否包含a,assert a in b
- 判断b不包含a,assert a not in b
assert 断言的对象可以是字符串、int、float、list、dict、tuple 任一类型。
使用示例
自定义了一个查询所有用户信息接口,返回参数格式如下:
{
"code": 1000,
"data": [
{"id": 1, "username": "刘德华", "sex": 0, "telephone": "12306", "address": "香港九龙区"},
{"id": 2, "username": "梅艳芳", "sex": 1, "telephone": "95511", "address": "上海黄浦区"},
{"id": 3, "username": "陈百强", "sex": 0, "telephone": "10086", "address": "北京海淀区"},
]
}
用例断言如下:
def test_get_all_users():
'''查询所有用户信息'''
url = "http://127.0.0.1:5000/users"
res = requests.get(url=url).text
res = json.loads(res)
# 断言是否相等
assert res['code'] == 1000
# 断言返回结果中data是否为True(这里其实就是判断是否为空)
assert res['data']
Andy = {"id": 1, "username": "刘德华", "sex": 0, "telephone": "12306", "address": "香港九龙区"}
# 断言返回结果中data是否包含刘德华的信息
assert Andy in res['data']
断言通过:

我们修改一下脚本让断言不通过,如下:
def test_get_all_users():
'''查询所有用户信息'''
url = "http://127.0.0.1:5000/users"
res = requests.get(url=url).text
res = json.loads(res)
# 断言是否相等
assert res['code'] == 1001
# 断言返回结果中data是否为True(这里其实就是判断是否为空)
assert not res['data']
Andy = {"id": 1, "username": "刘德华", "sex": 0, "telephone": "12306", "address": "香港九龙区"}
# 断言返回结果中data是否包含刘德华的信息
assert Andy not in res['data']
运行结果如下:

可以看到,code 的 Actual 为1000,而 Excepted 为1001,所以断言直接报错,不继续执行后面的代码。
断言结果添加异常信息
我们可以在断言异常的时候,输出一些提示信息,这样断言报错后,可以方便我们查看原因。
自定义的用户信息接口可以查询某个用户的信息,对它编写测试脚本如下:
def test_get_user():
'''查询所有用户信息'''
url = "http://127.0.0.1:5000/users/1"
res = requests.get(url=url).text
res = json.loads(res)
assert res['code'] == 1000
assert res['data']['username'] == "张学友", "判断返回是否为张学友,实际返回:{}".format(res['data']['username'])
运行结果如下:

总结
pytest 还能对执行过程中产生的 Exception 及 Warnning 进行断言,但这些情况在我们的测试中很少会用到,所以不做过多阐述。
pytest(5)-断言的更多相关文章
- 5. pytest的断言
一.pytest 支持Python自带的标准断言 def f(): return 3 def test_function(): assert f() == 4 pytest 的断言报告,也很丰富,和详 ...
- Python单元测试框架之pytest 4 -- 断言
From: https://www.cnblogs.com/fnng/p/4774676.html Python单元测试框架之pytest -- 断言 2015-08-31 23:57 by 虫师, ...
- iOS自动化探索(五)自动化测试框架pytest - Assert断言的使用
使用assert语句进行断言 pytest允许使用标准的python assert语法,用来校验expectation and value是否一致 代码演示: def func(): def test ...
- pytest的断言、跳过、运行的按需要处理
def test_one(): assert 1==1 assert 1!=2 assert {'name':'linda','age':19}=={'name':'linda','age':190} ...
- pytest自动化7:assert断言
前言:assert断言就是将实际结果和期望结果做对比,符合预期结果就测试pass,不符合预期就测试failed. 实例1:简单断言 实例1优化版--增加异常信息文字描述 异常断言 excinfo 是一 ...
- pytest七:assert断言
断言是写自动化测试基本最重要的一步,一个用例没有断言,就失去了自动化测试的意义了.什么是断言呢?简单来讲就是实际结果和期望结果去对比,符合预期那就测试 pass,不符合预期那就测试 failed py ...
- pytest文档11-assert断言
前言 断言是写自动化测试基本最重要的一步,一个用例没有断言,就失去了自动化测试的意义了.什么是断言呢? 简单来讲就是实际结果和期望结果去对比,符合预期那就测试pass,不符合预期那就测试 failed ...
- pytest之assert断言
assert pytest允许您使用标准Python断言来验证Python测试中的期望和值.例如,你可以写下 # content of test_assert1.py def f(): return ...
- Pytest系列(2) - assert断言详细使用
如果你还想从头学起Pytest,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1690628.html 前言 与unittest不同,py ...
随机推荐
- JAVA并发-AQS知识笔记
概述 AQS是AbstractQueuedSynchronizer的缩写,翻译成中文就是抽象队列同步器,AbstractQueuedSynchronizer这个类也是在java.util.concur ...
- redis的使用场景和优缺点
使用场景和优缺点: 2 Redis用来做什么? 通常局限点来说,Redis也以消息队列的形式存在,作为内嵌的List存在,满足实时的高并发需求.而通常在一个电商类型的数据处理过程之中,有关商品,热销, ...
- 微信小程序云开发指南
一.初识云开发 官方文档 小程序·云开发是微信团队联合腾讯云推出的专业的小程序开发服务. 开发者可以使用云开发快速开发小程序.小游戏.公众号网页等,并且原生打通微信开放能力. 开发者无需搭建服务器,可 ...
- 【reverse】逆向3 寻找地址
[reverse]逆向3 寻找地址 寻址公式一:[立即数] 读取内存的值: mov eax,dword prt ds:[0x13FFC4] 将内存编号为0x13FFC4.0x13FFC5.0x13FF ...
- deepin20体验
现在Ubuntu20吊打deepin20 100条街.撑了20天受不了deepin 优点 开机启动设置简单,即使不是应用商店的应用也很好 deepin仓库不用代理也很快.,而且有些Ubuntu下载不了 ...
- vue学习9-更新视图
<!DOCTYPE html> <html lang='en'> <head> <meta charset='UTF-8'> <meta ht ...
- 【重构前端知识体系之HTML】HTML5给网页音频带来的变化
[重构前端知识体系之HTML]HTML5给网页音频带来的变化 引言 音乐播放,相信大家都很熟悉,但是早在之前的音乐播放之前,你的浏览器会问你,是否下载flash插件.然而现在,估计一些年轻的开发者都不 ...
- python类2
#!/usr/bin/python #coding=utf-8 #好好学习,天天向上 class Car: """一次模拟汽车的简单尝试""" ...
- Solaris平台,如何通过端口号快速查看PID(进程)
1. vi /tmp/test.ksh #!/bin/ksh line='---------------------------------------------' pids=$(/usr/bin/ ...
- APC 篇—— APC 挂入
写在前面 此系列是本人一个字一个字码出来的,包括示例和实验截图.由于系统内核的复杂性,故可能有错误或者不全面的地方,如有错误,欢迎批评指正,本教程将会长期更新. 如有好的建议,欢迎反馈.码字不易, ...