python断言:多重断言执行

背景

断言在做自动化测试时,是必不可少的。有时候为了提高用例的精准性会写多个断言,但是当第一个断言失败时,后面代码就不会执行了,从而影响整体的自动化测试。为了解决这个问题,于是引进python- assume插件。

断言的方法

assert断言:

原生python自带的assert断言

多重断言:

python-assume插件

python- assume插件安装:

pip install pytest-assume

第一种:python自带的assert断言语法:

优点:assert断言失败会显示出具体的变量值

缺点:不支持断言多个,遇到第一个断言失败,后续代码不会执行

import pytest

def test_001():
    a,b,c = 1,1,2
    assert a == c	#报错,只支持单个assert断言
    assert a == b   
    print('hello world') #控制台不会输出hello world
    
if __name__ == '__main__':
    pytest.main(['-sv', __file__])



报错信息:
test4.py::test_001 FAILED  #没有显示hello world

=================================== FAILURES ===================================
___________________________________ test_001 ___________________________________

    def test_001():
        a,b,c = 1,1,2
>       assert a == c
E       assert 1 == 2 #显示出具体的变量值

第二种:python-assume断言的语法:

优点:支持多重断言,遇到第一个断言失败,后续代码会执行

缺点:断言失败显示为False,而不是具体的变量值

import pytest

def test_002():
    a,b,c = 1,1,2
    pytest.assume(a == c)   # 这样写 看不到 变量的值
    pytest.assume(a == b)   # 这样写 看不到 变量的值
    print('hello world')	# 控制台输出hello world
    
if __name__ == '__main__':
    pytest.main(['-sv', __file__])




错误信息:
test4.py::test_002 hello world  #输出hello world
FAILED

=================================== FAILURES ===================================
___________________________________ test_002 ___________________________________     
E               test4.py:24: AssumptionFailure
E               >>	pytest.assume(a == c)   # 这样写 看不到 变量的值
E               AssertionError: assert False #显示为False,而不是具体的变量值

第三种:通过上下文管理器with使用python-assume断言的语法:

优点:
支持多重断言,遇到第一个断言失败,后续代码会执行
断言失败会显示出具体的变量值

import pytest

def test_003():
    a,b,c = 1,1,2
    with pytest.assume: assert (a == c)  # 用with写法可以看到变量的值
    with pytest.assume: assert (a == b)  # 用with写法可以看到变量的值
    print('hello world')
    
if __name__ == '__main__':
    pytest.main(['-sv', __file__])



test4.py::test_003 hello world  #输出hello world
FAILED

=================================== FAILURES ===================================
___________________________________ test_003 ___________________________________

    def test_003():
        a,b,c = 1,1,2
>       with pytest.assume: assert (a == c)  # 用with写法可以看到变量的值
E       pytest_assume.plugin.FailedAssumption: 
E       1 Failed Assumptions:
E       
E       test4.py:30: AssumptionFailure
E       >>	with pytest.assume: assert (a == c)  # 用with写法可以看到变量的值
E       AssertionError: assert 1 == 2  #显示出具体的变量值

with使用python-assume断言的语法补充:

不要在一个with代码块去执行多个assert断言,如第一个assert断言失败,后续的语句不会执行

def test_004():
    '''
    1、不要在一个with代码块去执行多个assert断言,如第一个assert断言失败,后续的语句不会执行
    :return:
    '''
    a,b,c = 1,1,2
    with pytest.assume:
        assert (a == c)  # 用with写法可以看到变量的值
        assert (a == b)  # 用with写法可以看到变量的值
        print('断言(a==c)失败后,后续的代码不会执行,控制台不会输出这段话')
        
if __name__ == '__main__':
    pytest.main(['-sv', __file__])



test4.py::test_004 FAILED  #没有打印print语句

=================================== FAILURES ===================================
___________________________________ test_004 ___________________________________

        with pytest.assume:
>           assert (a == c)  # 用with写法可以看到变量的值
E           pytest_assume.plugin.FailedAssumption: 
E           1 Failed Assumptions:
E           
E           test4.py:43: AssumptionFailure
E           >>	print('断言(a==c)失败后,后续的代码不会执行,控制台不会输出这段话')
E           AssertionError: assert 1 == 2  #显示出具体的变量值

        
  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值