pytest【assert声明和检测预期异常】

一、assert 声明

使用pytest编写测试用例时,若需要传递失败消息,则可直接使用python中自带的assert关键字

如果使用了其他的测试框架,则会看到许多以assert开头的函数,下面列举了使用assert与各种以assert开头的函数的区别

pytest unittest
assert something assertTrue(something)
assert a == b assertEqual(a, b)
assert a <= b assertLessEqual(a, b)

pytest允许assert关键字后面添加任何表达式,如果表达式的值通过了bool转换后等于False,则意味测试失败。

import pytest

result = [(1,2,3), (3, 2, 1), ('do_something', True, 'everyday')]

@pytest.mark.test_01
def test_01_pass():
    expected = (1, 2, 3)
    assert expected == result[2]

@pytest.mark.test_03
def test_02_passing():
    ex_0 = (3, 2, 1)
    ex_1 = ('do_something', True)
    assert ex_0 == ex_1

以下展示都是assert失败的例子,可以看到回溯信息非常的丰富。

F:\TESTING\BlogPosts\ReadPytest>pytest test_one.py
================================================================================== test session starts ===================================================================================
collected 2 items                                                                                                                                                                         

test_one.py FF                                                                                                                                                                      [100%]

======================================================================================== FAILURES ========================================================================================
______________________________________________________________________________________ test_01_pass ______________________________________________________________________________________

    @pytest.mark.test_01
    def test_01_pass():
        expected = (1, 2, 3)
>       assert expected == result[2]
E       AssertionError: assert (1, 2, 3) == ('do_somethin...e, 'everyday')
E         At index 0 diff: 1 != 'do_something'
E         Use -v to get the full diff

test_one.py:16: AssertionError
____________________________________________________________________________________ test_02_passing _____________________________________________________________________________________

    @pytest.mark.test_03
    def test_02_passing():
        ex_0 = (3, 2, 1)
        ex_1 = ('do_something', True)
>       assert ex_0 == ex_1
E       AssertionError: assert (3, 2, 1) == ('do_something', True)
E         At index 0 diff: 3 != 'do_something'
E         Left contains one more item: 1
E         Use -v to get the full diff

test_one.py:22: AssertionError
================================================================================ short test summary info ===&
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值