pytest测试框架系列 - pytest 断言assert使用
前言
- 测试用例的预期结果是用例不可缺少的一部分,那么断言就是自动化测试不可缺少的一步,一个没有断言的用例,自动化测试的就没有意义了。那什么是断言呢?
- 简单来讲就是实际结果和期望结果去对比,符合预期那就测试pass,不符合预期那就测试 failed
- Pytest里面使用关键字assert,断言为一个表达式,只要表达式的最终结果为True,那么断言通过,用例执行成功,否则用例执行失败
Assert 常用断言方式
pytest里面断言实际上就是python里面的assert断言方法,常用的有以下几种
- assert xx 判断xx为真
- assert not xx 判断xx不为真
- assert a in b 判断b包含a
- assert a == b 判断a等于b
- assert a != b 判断a不等于b
示例:
# _*_coding:utf-8 _*_
# @Time :2021/7/2 21:27
# @Author : king
# @File :test_assert.py
# @Software :PyCharm
# @blog :https://blog.csdn.net/u010454117
# @WeChat Official Account: 【测试开发知识库】
import pytestdef func(a):if a > 2:return Trueelse:return Falsedef test_01():"""断言xx为真"""a = 3b = 1assert func(a)def test_02():"""断言 b 包含 a"""a = "king"b = "hello king"assert a in bdef test_03():"""断言相等"""a = "king"b = "king"assert a == bdef test_04():"""断言不等于"""a = 1b = 2assert a != bif __name__ == "__main__":pytest.main()
命令行输入: pytest -s test_assert.py
执行结果如下:
注意:用例如果没有断言且运行正常,测试结果为pass
那么断言都能正常进行吗?所以接下来我们讲解一下异常断言
Pytest 异常断言Excepiton
- 除了支持对代码正常运行的结果断言之外,Pytest也能够对 Exception 和 Warnning 进行断言,来断定某种条件下,一定会出现某种异常或者警告。在功能测试和集成测试中,这两类断言用的不多,这里简单介绍一下。
对于异常的断言,Pytest的语法是:with pytest.raises(异常类型),可以看下面的这个例子:
def test_zero_division():with pytest.raises(ZeroDivisionError):1 / 0
这个测试用例断言运算表达式1除以0会产生ZeroDivisionError异常。除了对异常类型进行断言,还可以对异常信息进行断言,比如:
# _*_coding:utf-8 _*_
# @Time :2021/7/2 21:43
# @Author : king
# @File :test_except_assert.py
# @Software :PyCharm
# @blog :https://blog.csdn.net/u010454117
# @WeChat Official Account: 【测试开发知识库】
import pytestdef test_zero_division():"""断言异常"""with pytest.raises(ZeroDivisionError) as excinfo:1 / 0# 断言异常类型typeassert excinfo.type == ZeroDivisionError# 断言异常value值assert "division by zero" in str(excinfo.value)
命令行输入: pytest -s test_except_assert.py
执行结果如下:
这个测试用例,就断言了excinfo.value的内容中包含division by zero这个字符串,这在需要断言具体的异常信息时非常有用。
关于更多的Exception和Warnning的断言可以参考Pytest的官方文档:
Exception和Warnning的断言 Pytest的官方文档
我们再来看下下面这个断言失败你发现啥了呢?
从这个断言看出来,断言失败提示信息是不是对我们不太友好,不是很明显
优化断言提示信息
def test_assert_fail():a = 2b = 3assert a == b, "判断 a 和 b 是否相等 a:{} b: {}".format(a, b)
命令行输入: pytest -s test_assert_fail.py
执行结果如下:
以上为内容纯属个人理解,如有不足,欢迎各位大神指正,转载请注明出处!
如果觉得文章不错,欢迎关注微信公众号,微信公众号每天推送相关测试技术文章
pytest测试框架系列 - pytest 断言assert使用相关推荐
- pytest测试框架系列 - setup和teardown的详细讲解
简介 前面使用过unittest的都知道,setup和teardown是用来处理用例的前置工作和清理工作,其中还有setupclass和teardownclass是保证执行所以的用例都只执行1次前置和 ...
- pytest测试框架(七)---pytest与jenkins集成(pytest+jenkins+allure)
目录 一.pytest注册命令行选项 1.addoption 2.pytestconfig.getoption 3.示例 二.Jenkins上显示allure测试报告 1.安装插件 2.配置Allur ...
- Python编程必不可少的pytest测试框架
进行编程测试重要的是为了更高效的完成功能的实现. pytest是基于unittest实现的第三方测试框架,比 unittest 更加的简洁.高效,并且可以完美兼容 unittest 的测试代码,无需对 ...
- Pytest测试框架(二):pytest 的setup/teardown方法
系列文章目录 Pytest测试框架(一):pytest安装及用例执行 Pytest测试框架(二):pytest 的setup/teardown方法 Pytest测试框架(三):pytest fixtu ...
- Pytest测试框架(五):pytest + allure生成测试报告
系列文章目录 Pytest测试框架(一):pytest安装及用例执行 Pytest测试框架(二):pytest 的setup/teardown方法 Pytest测试框架(三):pytest fixtu ...
- Pytest 测试框架——数据驱动
引言 前面已经和大家介绍过 Unittest 测试框架的数据驱动框架 DDT,以及其实现原理.今天和大家分享的是 Pytest 测试框架的数据驱动,Pytest 测试框架的数据驱动是由 pytest ...
- Pytest系列——allure(原理)之allure工具与Pytest测试框架集成
官方介绍 1.Allure Framework是一种灵活的轻量级多语言测试报告工具,不仅可以以简洁的Web报告形式非常简洁地显示已测试的内容,也允许参与开发过程的每个人从日常测试中提取最大程度的有用信 ...
- pytest测试框架_聊聊 Python 的单元测试框架(三):最火的 pytest
本文首发于 HelloGitHub 公众号,并发表于 Prodesire 博客. 一.介绍 本篇文章是<聊聊 Python 的单元测试框架>的第三篇,前两篇分别介绍了标准库 unittes ...
- [翻译]pytest测试框架(一)
此文已由作者吴琪惠授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 纯官网译文而已... pytest是一个成熟的.全功能的python测试工具. pytest框架编写测试用例 ...
最新文章
- SmartFoxServer 2X 笔记一:login request (转)
- VoltDB介绍——本质:数据保存在内存,充分利用CPU,单线程去锁,底层数据结构未知...
- 必然之势:从结构、时间、媒介的角度看信息的发展趋势
- UOJ #149 [NOIP 2015] 子串
- 修改Linux字体出现乱码
- 用javascript实现自动隐藏页面字段
- java向注册表单传递数据php_PHP提交from表单的方法
- Mac OS X 10.10更新及体验
- 「数据分析」Sqlserver中的窗口函数的精彩应用之数据差距与数据岛(含答案)...
- 记录一次cookie导致登录失败的惨案
- unity5.4.3p2里面的AssetBundle打包流程
- wordpress模板-响应式博客主题模板-Repay主题开源版
- linux复制duo文件,Linux打印目录下多个文件
- 点在多边形内 java_判断点在多边形内部的方法(Java版)
- Cannot change version of project facet Dynamic Web Module to 3.0
- 单片机中断实验 EX0
- ES6 模板字符串方法
- 技术文摘12 yun jia 技术 资料 截图工具 美容
- 基于G6-Editor的流程图编辑器
- Disentangling and Unifying Graph Convolutions for Skeleton-Based Action Recognition