前言

  • 测试用例的预期结果是用例不可缺少的一部分,那么断言就是自动化测试不可缺少的一步,一个没有断言的用例,自动化测试的就没有意义了。那什么是断言呢?
  • 简单来讲就是实际结果和期望结果去对比,符合预期那就测试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使用相关推荐

  1. pytest测试框架系列 - setup和teardown的详细讲解

    简介 前面使用过unittest的都知道,setup和teardown是用来处理用例的前置工作和清理工作,其中还有setupclass和teardownclass是保证执行所以的用例都只执行1次前置和 ...

  2. pytest测试框架(七)---pytest与jenkins集成(pytest+jenkins+allure)

    目录 一.pytest注册命令行选项 1.addoption 2.pytestconfig.getoption 3.示例 二.Jenkins上显示allure测试报告 1.安装插件 2.配置Allur ...

  3. Python编程必不可少的pytest测试框架

    进行编程测试重要的是为了更高效的完成功能的实现. pytest是基于unittest实现的第三方测试框架,比 unittest 更加的简洁.高效,并且可以完美兼容 unittest 的测试代码,无需对 ...

  4. Pytest测试框架(二):pytest 的setup/teardown方法

    系列文章目录 Pytest测试框架(一):pytest安装及用例执行 Pytest测试框架(二):pytest 的setup/teardown方法 Pytest测试框架(三):pytest fixtu ...

  5. Pytest测试框架(五):pytest + allure生成测试报告

    系列文章目录 Pytest测试框架(一):pytest安装及用例执行 Pytest测试框架(二):pytest 的setup/teardown方法 Pytest测试框架(三):pytest fixtu ...

  6. Pytest 测试框架——数据驱动

    引言 前面已经和大家介绍过 Unittest 测试框架的数据驱动框架 DDT,以及其实现原理.今天和大家分享的是 Pytest 测试框架的数据驱动,Pytest 测试框架的数据驱动是由 pytest ...

  7. Pytest系列——allure(原理)之allure工具与Pytest测试框架集成

    官方介绍 1.Allure Framework是一种灵活的轻量级多语言测试报告工具,不仅可以以简洁的Web报告形式非常简洁地显示已测试的内容,也允许参与开发过程的每个人从日常测试中提取最大程度的有用信 ...

  8. pytest测试框架_聊聊 Python 的单元测试框架(三):最火的 pytest

    本文首发于 HelloGitHub 公众号,并发表于 Prodesire 博客. 一.介绍 本篇文章是<聊聊 Python 的单元测试框架>的第三篇,前两篇分别介绍了标准库 unittes ...

  9. [翻译]pytest测试框架(一)

    此文已由作者吴琪惠授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 纯官网译文而已... pytest是一个成熟的.全功能的python测试工具. pytest框架编写测试用例 ...

最新文章

  1. SmartFoxServer 2X 笔记一:login request (转)
  2. VoltDB介绍——本质:数据保存在内存,充分利用CPU,单线程去锁,底层数据结构未知...
  3. 必然之势:从结构、时间、媒介的角度看信息的发展趋势
  4. UOJ #149 [NOIP 2015] 子串
  5. 修改Linux字体出现乱码
  6. 用javascript实现自动隐藏页面字段
  7. java向注册表单传递数据php_PHP提交from表单的方法
  8. Mac OS X 10.10更新及体验
  9. 「数据分析」Sqlserver中的窗口函数的精彩应用之数据差距与数据岛(含答案)...
  10. 记录一次cookie导致登录失败的惨案
  11. unity5.4.3p2里面的AssetBundle打包流程
  12. wordpress模板-响应式博客主题模板-Repay主题开源版
  13. linux复制duo文件,Linux打印目录下多个文件
  14. 点在多边形内 java_判断点在多边形内部的方法(Java版)
  15. Cannot change version of project facet Dynamic Web Module to 3.0
  16. 单片机中断实验 EX0
  17. ES6 模板字符串方法
  18. 技术文摘12 yun jia 技术 资料 截图工具 美容
  19. 基于G6-Editor的流程图编辑器
  20. Disentangling and Unifying Graph Convolutions for Skeleton-Based Action Recognition

热门文章

  1. 证券公司在存管银行开立客户交易结算资金汇总账户
  2. 下列不属于计算机图形学的应用的是,计算机图形学试卷
  3. 极速办公(word)插入的表格如何修改文字方向
  4. 770天后,微博大变
  5. UPnP功能使用详解
  6. 打印系统开发(7)——如何使用打印机
  7. 判断一个数为质数或合数
  8. 3000元左右性价比最高的手机2023 3000元手机性价比排行榜2023
  9. 如何在Mac电脑中输入多种标点符号和文字表情
  10. 解决新版本Android studio无法安装LayoutCreator的问题