首页 > 其他分享 >14.Pytest常用插件:pytest-assume多重断言

14.Pytest常用插件:pytest-assume多重断言

时间:2023-01-17 10:46:50浏览次数:45  
标签:插件 False 14 assume 用例 pytest test 断言

一、前言

在自动化测试过程中,我们执行完用例之后,需要验证脚本执行的结果和预期的结果是否一致,来达到断言测试用例是否执行成功。一般情况下我们常用的断言方式是assert + 布尔型/表达式形式,但是这种形式的断言不通过则用例会直接停止,该条用例直接结束,哪怕后面还有代码也不会执行。

那么,怎么才能让用例完整的执行完再判断成功与否呢?pytest-assume帮我们解决了这一问题。我们也可以给一条用例设置多个断言,哪怕第一个断言失败,后面的断言依然执行判断。

二、学习目标

1.pytest-assume安装

2.pytest-assume应用

三、知识点

1.pytest-assume安装

插件安装:

pip install pytest-assume

2.pytest-assume应用

  • 语法:

    pytest.assume(布尔型/表达式)
    
  • 原生的assert和pytest-assume断言对比

    代码示例:

    import pytest
    
    class TestCase():
    
        def test_01(self):
            print("---用例1执行---")
            assert False,"用例1-第一次断言"
            assert False,"用例1-第二次断言"
    
    
        def test_02(self):
            print("---用例2执行---")
            pytest.assume(False,"用例2-第一次断言")
            pytest.assume(False,"用例2-第二次断言")
    

    运行结果:

    ================================== FAILURES ===================================
    ______________________________ TestCase.test_01 _______________________________
    
    self = <test_demo.TestCase object at 0x000001FB31A95780>
    
        def test_01(self):
            print("---用例1执行---")
    >       assert False,"用例1-第一次断言"
    E       AssertionError: 用例1-第一次断言   
    E       assert False
    
    test_demo.py:7: AssertionError
    ---------------------------- Captured stdout call -----------------------------
    ---用例1执行---
    ______________________________ TestCase.test_02 _______________________________
    
    tp = <class 'pytest_assume.plugin.FailedAssumption'>, value = None, tb = None
    
        def 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               2 Failed Assumptions:
    E               
    E               test_demo.py:13: AssumptionFailure
    E               >>	pytest.assume(False,"用例2-第一次断言")
    E               AssertionError: 用例2-第一次断言
    E               assert False
    E               
    E               test_demo.py:14: AssumptionFailure
    E               >>	pytest.assume(False,"用例2-第二次断言")
    E               AssertionError: 用例2-第二次断言
    E               assert False
    
    D:\Python36\lib\site-packages\six.py:718: FailedAssumption
    ---------------------------- Captured stdout call -----------------------------
    ---用例2执行---
    =========================== short test summary info ===========================
    FAILED test_demo.py::TestCase::test_01 - AssertionError: 用例1-第一次断言
    FAILED test_demo.py::TestCase::test_02 - pytest_assume.plugin.FailedAssumption: 
    ============================== 2 failed in 0.06s ==============================
    

    用例1由于第一次断言失败了所以没有运行,用例2哪怕第一次断言失败了,也进行了第二次断言。

标签:插件,False,14,assume,用例,pytest,test,断言
From: https://www.cnblogs.com/ckxingchen/p/17057186.html

相关文章

  • 16. Pytest常用插件:pytest-html生成简洁的测试报告
    一、前言我们都知道,在功能测试过程中,执行完测试用例后,最终要交付测试报告来直观的展示测试结果。自动化测试也是同样,脚本运行完之后,需要有一份测试报告对测试执行的结果进......
  • 18. Pytest常用插件:allure-pytest生成精美的测试报告(二)
    一、前言前面我们简单介绍了如何快速生成一个allure测试报告,其实allure也是可以自定义展示的。allure报告可以自定义展示很多详细的信息描述测试用例,包括epic、feature、s......
  • 11. Pytest常用插件:pytest-ordering调整用例执行顺序
    一、前言在pytest中,测试用例的默认执行顺序是从上到下执行的,但是有时候我们会有这样的需求,就是打乱测试用例的执行顺序来达到某个测试效果,这时候就需要用到Pytest中的一个......
  • 13. Pytest常用插件:pytest-repeat重复运行用例
    一、前言上面我们介绍了当用例失败时的重复运行,其实我们在实际工作中还会遇到一种情况,我们就是单纯的想让某条用例重复运行指定的次数。平常在做功能测试的时候,经常会遇......
  • 12. Pytest常用插件: pytest-rerunfailures失败用例重跑
    一、前言测试环境不稳定偶发接口超时(和服务无关,纯粹是环境问题),然后执行接口case也因此偶发失败。比如同一个接口case跑五次,其中有两次失败,另外三次都是成功的,这种偶发性的......
  • [LeetCode] 1814. Count Nice Pairs in an Array
    Youaregivenanarray nums thatconsistsofnon-negativeintegers.Letusdefine rev(x) asthereverseofthenon-negativeinteger x.Forexample, rev(1......
  • P4766 [CERC2014]Outer space invaders
    目录简述假算法一真算法一真算法二真算法三代码知识点:区间DP链接:Luogu。可能更加的阅读体验:Myblog。简述有\(n\)匹黄金船赶来侵略地球。第\(i\)匹黄金船会在时......
  • 洛谷P1496 火烧赤壁【题解】
    事先声明本题解文字比较多,较为详细,算法为离散化和差分,如会的大佬可以移步去别处看这道题的思路(因为作者比较懒,不想新开两个专题)。题目简要给定每个起火部分的起点和终点......
  • 手写笔记14:进程间五种通信方式?
    ......
  • MybatisPlus常用插件
    分页插件MyBati-Plus自带分页插件,只要简单的配置即可实现分页功能。添加配置类​​MyBatisPlusConfig​​。packagecom.dawn.mybatisplus.config;importcom.baomidou.m......