19-pytest断言失败后,怎样保持后续的断言继续执行?(pytest-assume)

  • 1 引入
  • 2 pytest-assume安装
  • 3 assert断言
  • 4 pytest-assume断言

1 引入

  • pytest使用assert进行断言,如果有多个断言,第一个失败了,那么后续的断言将不会执行;
  • 那么如果第一个断言失败了,还想继续保持执行后边的断言,那如何做?
  • 我们可以使用pytest-assume来解决这个问题,即使用多重断言插件。

2 pytest-assume安装

pip3 install pytest-assume
C:\Users\Administrator>pip3 install pytest-assume
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Collecting pytest-assumeDownloading https://pypi.tuna.tsinghua.edu.cn/packages/e8/5d/ecd54af3d3dc3f69e9cf527449a51bd5ca39cd47aaeab9a74e55603a9ce1/pytest_assume-2.4.3-py3-none-any.whl (6.0 kB)
Requirement already satisfied: pytest>=2.7 in d:\python37\lib\site-packages (from pytest-assume) (6.2.4)
Requirement already satisfied: six in d:\python37\lib\site-packages (from pytest-assume) (1.15.0)
Requirement already satisfied: importlib-metadata>=0.12 in d:\python37\lib\site-packages (from pytest>=2.7->pytest-assume) (2.1.1)
Requirement already satisfied: atomicwrites>=1.0 in d:\python37\lib\site-packages (from pytest>=2.7->pytest-assume) (1.4.0)
Requirement already satisfied: toml in d:\python37\lib\site-packages (from pytest>=2.7->pytest-assume) (0.10.2)
Requirement already satisfied: pluggy<1.0.0a1,>=0.12 in d:\python37\lib\site-packages (from pytest>=2.7->pytest-assume) (0.13.1)
Requirement already satisfied: py>=1.8.2 in d:\python37\lib\site-packages (from pytest>=2.7->pytest-assume) (1.10.0)
Requirement already satisfied: colorama in d:\python37\lib\site-packages (from pytest>=2.7->pytest-assume) (0.4.4)
Requirement already satisfied: iniconfig in d:\python37\lib\site-packages (from pytest>=2.7->pytest-assume) (1.1.1)
Requirement already satisfied: packaging in d:\python37\lib\site-packages (from pytest>=2.7->pytest-assume) (20.8)
Requirement already satisfied: attrs>=19.2.0 in d:\python37\lib\site-packages (from pytest>=2.7->pytest-assume) (20.3.0)
Requirement already satisfied: zipp>=0.5 in d:\python37\lib\site-packages (from importlib-metadata>=0.12->pytest>=2.7->pytest-assume) (1.2.0)
Requirement already satisfied: pyparsing>=2.0.2 in d:\python37\lib\site-packages (from packaging->pytest>=2.7->pytest-assume) (2.4.7)
Installing collected packages: pytest-assume
Successfully installed pytest-assume-2.4.3

3 assert断言

  • 先看pytest自带的assert断言效果:
# -*- coding:utf-8 -*-
# 作者:虫无涯
# 日期:2023/3/16
# 文件名称:test_assume.py
# 作用:pytest-assume插件的使用
# 联系:VX(NoamaNelson)
# 博客:https://blog.csdn.net/NoamaNelsonimport pytestdef test_case():a = 100b = 200assert a + b < 100assert a - b > 0assert a * b == 20000assert a / b == 200assert (b - a) / a == 1if __name__ == '__main__':pytest.main(["-s", "test_assume.py"])
  • 运行结果如下,可以看到第一个断言失败后,后边的断言是无法进行的:
collecting ... collected 1 itemtest_assume.py::test_case FAILED                                         [100%]
test_case\test_j\test_assume.py:8 (test_case)
def test_case():a = 100b = 200
>       assert a + b < 100
E       assert (100 + 200) < 100test_assume.py:12: AssertionError断言失败断言失败================================== FAILURES ===================================
__________________________________ test_case __________________________________def test_case():a = 100b = 200
>       assert a + b < 100
E       assert (100 + 200) < 100test_assume.py:12: AssertionError
=========================== short test summary info ===========================
FAILED test_assume.py::test_case - assert (100 + 200) < 100
============================== 1 failed in 0.15s ==============================

4 pytest-assume断言

  • 代码如下:
# -*- coding:utf-8 -*-
# 作者:虫无涯
# 日期:2023/3/16
# 文件名称:test_assume.py
# 作用:pytest-assume插件的使用
# 联系:VX(NoamaNelson)
# 博客:https://blog.csdn.net/NoamaNelsonimport pytest# def test_case():
#     a = 100
#     b = 200
#     assert a + b < 100
#     assert a - b > 0
#     assert a * b == 20000
#     assert a / b == 200
#     assert (b - a) / a == 1def test_case01():a = 100b = 200pytest.assume(a + b < 100)pytest.assume(a - b > 0)pytest.assume(a * b == 20000)pytest.assume(a / b == 200)pytest.assume((b - a) / a == 1)print("执行到这了~~~~~~~~~~")if __name__ == '__main__':pytest.main(["-s", "test_assume.py"])
  • 执行结果如下,可以看到前边有断言失败的,后边的断言是继续进行的:
test_assume.py::test_case01 FAILED                                       [100%]执行到这了~~~~~~~~~~test_case\test_j\test_assume.py:21 (test_case01)
tp = <class 'pytest_assume.plugin.FailedAssumption'>, value = None, tb = Nonedef reraise(tp, value, tb=None):try:if value is None:value = tp()if value.__traceback__ is not tb:
>               raise value.with_traceback(tb)
E               pytest_assume.plugin.FailedAssumption:
E               3 Failed Assumptions:
E
E               test_assume.py:25: AssumptionFailure
E               >>    pytest.assume(a + b < 100)
E               AssertionError: assert False
E
E               test_assume.py:26: AssumptionFailure
E               >>    pytest.assume(a - b > 0)
E               AssertionError: assert False
E
E               test_assume.py:28: AssumptionFailure
E               >>    pytest.assume(a / b == 200)
E               AssertionError: assert FalseD:\Python37\lib\site-packages\six.py:702: FailedAssumption断言失败断言失败================================== FAILURES ===================================
_________________________________ test_case01 _________________________________tp = <class 'pytest_assume.plugin.FailedAssumption'>, value = None, tb = Nonedef reraise(tp, value, tb=None):try:if value is None:value = tp()if value.__traceback__ is not tb:
>               raise value.with_traceback(tb)
E               pytest_assume.plugin.FailedAssumption:
E               3 Failed Assumptions:
E
E               test_assume.py:25: AssumptionFailure
E               >>    pytest.assume(a + b < 100)
E               AssertionError: assert False
E
E               test_assume.py:26: AssumptionFailure
E               >>    pytest.assume(a - b > 0)
E               AssertionError: assert False
E
E               test_assume.py:28: AssumptionFailure
E               >>    pytest.assume(a / b == 200)
E               AssertionError: assert FalseD:\Python37\lib\site-packages\six.py:702: FailedAssumption
---------------------------- Captured stdout call -----------------------------
执行到这了~~~~~~~~~~
=========================== short test summary info ===========================
FAILED test_assume.py::test_case01 - pytest_assume.plugin.FailedAssumption:
============================== 1 failed in 0.17s ==============================

pytest学习和使用19-pytest断言失败后,怎样保持后续的断言继续执行?(pytest-assume)相关推荐

  1. python断言失败_python异常处理、自定义异常、断言原理与用法分析

    本文实例讲述了python异常处理.自定义异常.断言原理与用法.分享给大家供大家参考,具体如下: 什么是异常: 当程序遭遇某些非正常问题的时候就会抛出异常:比如int()只能处理能转化成int的对象, ...

  2. Python Pytest自动化测试 断言失败后续代码继续执行

    Time will tell. 做自动化测试时我们一般会一个用例写多个断言,而当第一个断言失败后,后面的代码就不会执行.这时我们可以引进pytest-assume插件来解决这些问题. 一.安装 pip ...

  3. Pytest之pytest.assume用例中断言1失败会继续执行后续代码断言2

    一般我们做自动化测试时,一个用例会写多个断言,当第一个断言失败后,后面的代码就不会执行了,于是我们引进了pytest-assume插件可以解决断言失败后继续断言的问题. 一.安装依赖包 pip ins ...

  4. redis执行失败后的处理

    以前工作那会儿,总是在很纠结redis执行失败了怎么处理.最主要的是两个问题 redis执行失败了怎么处理程序? redis事务中间有一条或者某几条数据执行失败了怎么处理?特别是redis事务,一直强 ...

  5. pytest学习和使用22-allure特性 丨总览中的Environment、Categories设置以及Flaky test使用

    22-allure特性 丨总览中的Environment和Categories设置 1 Environment设置 1.1 设置方法 1.2 创建文件 2 Categories设置 2.1 设置方式 ...

  6. pytest学习笔记

    目录 1.虚拟环境准备 2.安装pytest 3.pytest使用约束 4.执行方式 5.pytest常用运行参数介绍 6.解决大批量执行测试case问题多进程 7.失败重跑机制(以下两种均可) 8. ...

  7. pytest学习2: The writing and reporting of assertions in tests

    文章目录 测试中断言的编写和报告 1. Asserting with the `assert` statement 2. Assertions about expected exceptions 3. ...

  8. pytest学习--base

    pytest单元测试框架 单元测试是指在软件开发过程中,针对软件的最小单位(函数.方法)进行正确的检查测试 单元测试框架: java:junit和testing python:unnitest和pyt ...

  9. pytest学习和使用8-fixture如何实现teardown功能?(yield的使用)

    8-fixture如何实现teardown功能?(yield的使用) 1引入 2 yield说明 3 yield的使用 3.1 实现teardown 3.2 yield返回值 4 yield+with ...

最新文章

  1. 如何成为一名软件架构师?
  2. System.Web.HttpException
  3. 免师计算机与学前教育,2014届河南免师生源分布.doc
  4. hibernate inverse属性的作用
  5. java如何判断当前系统是windows还是linux?
  6. ShellExecute的各种用法 [转帖于 2009-05-020 21:15]
  7. windows whistler系统安装
  8. .net常用加密和解密算法
  9. astar插件下载 就行_premiere软件下载安装pr自学视频教程
  10. 梦幻西游易语言辅助教程
  11. 第一次做Google SEO,如何才能做好谷歌的优化?
  12. android banner图片错位,android轮播图Banner的使用及详解
  13. 使用IAR和BSL下载程序至MSP430F2122
  14. numpy.max() , sum()
  15. [hitroad杂货铺]KaTeX使用
  16. safari 浏览器输入框不能输入
  17. 2013新春奉送 Android摄像头开发完美demo--- 循环聚焦 缩放大小 旋转picture 查询支持的pict
  18. push代码到git上报错failed to push some refs to ‘远程仓库地址‘问题
  19. 比较实用的免费图标字库(转)
  20. 分布式锁——Redisson

热门文章

  1. php手机号码一分钟发送一次短信_限制一分钟只能发送一次手机短信
  2. 龙之谷2手游服务器维护,龙之谷2手游常见问题解答 龙之谷2常见问题汇总
  3. k8s监控 heapster部署实践
  4. python win32console_Python win32console.FOREGROUND_RED属性代码示例
  5. 服装设计师必备的时尚资讯网站
  6. 三星屏幕那么好,为什么华为mate 30 系列不全用?这两点原因是关键
  7. html+css+js实现狼吃羊小游戏
  8. 常见的运行时异常分类
  9. 摄像机标定中四大坐标系之间的关系
  10. 网页打不开,提示【代理服务器拒绝连接】的解决办法