前言
pytest中可以用python的assert断言,也可以写多个断言,但一个失败,后面的断言将不再执行 这样使用起来不是很方便。<br /> <br /> 例如:
断言1:断言响应的http的状态<br /> <br /> 断言2:断言响应返回的code值
断言3:断言响应返回的json中的data字段是否符合预期。
如果使用原生python的assert,就会遇到一个断言失败则全部失败的情况。比如说,断言1结果为Failed,那么断言2和断言3都不会被执行。
我们希望断言2和断言3继续执行,这样我们能获取更多的断言结果来判断出接口哪里出了问题,能够更好地进行问题定位,这时候该本文主角出现了:pytest-assume插件
1. 插件安装
安装命令: pip install pytest-assume
检查是否安装成功: pip show pytest-assume
2. 插件使用
例子 8-1
代码:
# -*- coding:utf-8 -*-
# Author: tang_ren_li
# 2021-1-26 10:45
import pytest
class Test_mul_assume():
def test_mul_assume(self):
print("对测试阶段1进行断言!")
pytest.assume(1>2) # 这里使用方式和 python 自带的 assume 有点区别
print("对测试阶段2进行断言!")
pytest.assume(1>3)
print("对测试阶段3进行断言!")
pytest.assume(4>3)
执行结果:
========================== test session starts=============================
collecting … collected 1 item
Test_Mutl_Assume.py::Test_mul_assume::test_mul_assume FAILED 【100%】
对测试阶段1进行断言!
对测试阶段2进行断言!
对测试阶段3进行断言!
Test_Mutl_Assume.py:6 (Test_mul_assume.test_mul_assume)
tp =
def reraise(tp, value, tb=None):<br /> try:<br /> if value is None:<br /> value = tp()<br /> if value.__traceback__ is not tb:<br />> raise value.with_traceback(tb)<br />E pytest_assume.plugin.FailedAssumption: <br />E 2 Failed Assumptions:<br />E <br />E Test_Mutl_Assume.py:10: AssumptionFailure<br />E >> pytest.assume(1>2) # 这里使用方式和 python 自带的 assume 有点区别<br />E AssertionError: assert False<br />E <br />E Test_Mutl_Assume.py:13: AssumptionFailure<br />E >> pytest.assume(1>3)<br />E AssertionError: assert False
说明:
- Python assert 和Pytest.assume 断言对比
- 一个可以允许pytest测试用例中执行多个失败的断言的插件(即上面断言1,断言2,断言3都失败的情况下,三个断言都能被执行)。该插件源自pytest-expect,并且做了一部分小的修改, 可以全局直接使用,无需指定fixtrue装饰器。
[
](https://blog.csdn.net/ccgshigao/article/details/113102627)