pytest多重断言的实现
作者:leslie0727 发布时间:2021-10-12 03:30:25
当我们写用例断言时,往往一个断言结果是不够的,所以需要加入多重断言,而多重断言,当断言中间出现断言结果False时,会中断后续的断言执行,会导致测试用例执行结果的准确性不高
使用pytest框架的插件pytest-assume, 实现用例执行时,其中一个断言失败后,执行后续的断言
安装:pip install pytest-assume
以下为使用示例:
import pytest
from pytest_assume.plugin import assume
class TestTwo:
def test001(self):
with assume:
assert True
with assume:
assert 1 == 2
def test002(self):
assert 1 == 1
if __name__ == '__main__':
pytest.main(['-v', 'test_002.py'])
我们很容易在以下信息中找出相应的日志信息:
在行有E标记的信息中,我们可以清晰看到提示 pytest_assume.plugin.FailedAssumption: 1 Failed Assumptions
collecting ... collected 2 items
test_002.py::TestTwo::test001 FAILED [ 50%]
test_002.py::TestTwo::test002 PASSED [100%]
================================== FAILURES ===================================
_______________________________ TestTwo.test001 _______________________________
self = <test_002.TestTwo object at 0x000001B24B284C40>
def test001(self):
with assume:
assert True
with assume:
> assert 1 == 2
E pytest_assume.plugin.FailedAssumption:
E 1 Failed Assumptions:
E
E test_002.py:10: AssumptionFailure
E >> assert 1 == 2
E AssertionError: assert 1 == 2
E +1
E -2
test_002.py:10: FailedAssumption
============================== warnings summary ===============================
D:\Python3.9.10\lib\site-packages\_pytest\config\__init__.py:1126
D:\Python3.9.10\lib\site-packages\_pytest\config\__init__.py:1126: PytestAssertRewriteWarning: Module already imported so cannot be rewritten: pytest_assume
self._mark_plugins_for_rewrite(hook)
-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
=========================== short test summary info ===========================
FAILED test_002.py::TestTwo::test001 - pytest_assume.plugin.FailedAssumption:
=================== 1 failed, 1 passed, 1 warning in 0.19s ====================
进程已结束,退出代码 0
来源:https://blog.csdn.net/weixin_43877527/article/details/128534270


猜你喜欢
- 从接触互联网开始,一直在关注每个网站页面浏览速度,不管大小国内外网站,而且每个用户的浏览时间都不一样,从而了解用户在浏览页面上时间体验尺度的
- <html><head><script type="text/javascript" sr
- 本文实例讲述了Python爬虫实现的根据分类爬取豆瓣电影信息功能。分享给大家供大家参考,具体如下:代码的入口:if __name__ ==
- 在python处理数据时,经常用到DataFrame和set。train=pd.read_csv('XXX.csv')#读取
- 前言最近在开发环境 oracle 启动侦听的时候,出现了 TNS:permission denied 的问题,通过网上和咨询朋友,最终找到了
- match()函数只检测RE是不是在string的开始位置匹配, search()会扫描整个string查找匹配, 也就是说match()只
- 问题查询了很多网上的文章,连接远程服务器调试基本上都是本地复制一个代码文件夹调试好后再部署到服务器上,这就很麻烦,(作为一个懒人)我想直接打
- 引文: 长期以来,多媒体信息在计算机中都是以文件形式存放,由操作系统管理的,但是随着计算机网络,分布式计算的发展,对多媒体信息进行高效的管理
- 只是粗略的知道yield可以用来为一个函数返回值塞数据,比如下面的例子:def addlist(alist): &nbs
- Python 提供了很多内置的工具函数(Built-in Functions),在最新的 Python 3 官方文档中,它列出了 69 个。
- 在计算机软件领域,缓存(Cache)指的是将部分数据存储在内存中,以便下次能够更快地访问这些数据,这也是一个典型的用空间换时间的例子。一般用
- 详解Python list 与 NumPy.ndarry 切片之间的区别实例代码:# list 切片返回的是不原数据,对新数据的修改不会影响
- #!#backup.sh##系统名称sysname=gzsyspath=/home/oracle/databak/$sysname/v_da
- 注意,在改变数值之前锁定应用,确保一段时间里只有一个客户执行该语句。<SCRIPT LANGUAGE="VBScr
- 导语今天在写 SQL 的时候,遇到一个问题。需求是这样的,查询数据,按照评分倒序、近一周访问量倒序,这样进行排序。问题是常规的写法,将 da
- @click @tap重叠事件区分点击remove事件会触发details事件,使用@click.stop官方介绍<ul>??
- 导读我们在使用selenium打开google浏览器的时候,默认打开的是一个新的浏览器窗口,而且里面不带有任何的浏览器缓存信息。当我们想要爬
- 这篇文章主要介绍了基于python traceback实现异常的获取与处理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参
- MySQL 日期类型:日期格式、所占存储空间、日期范围 比较。 日期类型 &nbs
- 前言:列表框控件显示多行文本,用户可以选中一行或者多行。所有的文本只能使用一种字体,不能混合使用多种字体。1 属性常用的参数列表如下:1.1