用例状态

2023-12-30 07:40:03

一、用例状态类型

用例执行完成后,每条用例都有自己的状态,常见的状态有:

  • passed:测试通过。
  • failed:断言失败。
  • error:内部代码错误。(譬如:fixture 不存在,fixture 里面有报错等。)
  • xfail:标记测试用例预期会失败的情况。(需要加 @pytest.mark.xfail() 。)

二、passed

passed 表示测试通过

  • 用例正常执行或断言通过
import pytest


def test_case_01():
    a = 1
    # 断言通过。
    assert 1 == a


if __name__ == '__main__':
    pytest.main(["-s"])
    # PASSED

三、failed

failed 表示测试失败

  • 断言失败导致
import pytest


def test_case_01():
    a = 1
    # 断言不通过。
    assert 2 == a


if __name__ == '__main__':
    pytest.main(["-s"])
    # FAILED
    # E       assert 2 == 1
    # AssertionError

  • 用例执行期间抛出异常导致
import pytest


@pytest.fixture()
def query():
    pass


# 调用异常的 fixture 。
def test_case_01(query):
    print("===执行测试用例1===")
    raise Exception


if __name__ == '__main__':
    pytest.main(["-s"])
    # FAILED
    # 用例执行期间抛出异常。

四、error

error 表示内部代码错误

  • 调用了错误的 fixture
import pytest


@pytest.fixture()
def query():
    name = "jan"
    # 断言不通过。
    assert "rose" == name
    return name


# 调用异常的 fixture 。
def test_case_01(query):
    print("===执行测试用例1===")


if __name__ == '__main__':
    pytest.main(["-s"])
    # ERROR
    # 因为用例调用的 fixture 内部发生了异常,所以导致 error。

五、xfail

xfail 表示标记测试用例预期会失败的情况(需要加 @pytest.mark.xfail 装饰器)。

  • 预期会失败
import pytest

"""
1.函数被使用 `@pytest.mark.xfail()` 进行标记。
2.意味着当运行这个测试用例时,即使断言失败,这个测试用例也将被标记为"xfail",而不是"failed"。
"""


@pytest.mark.xfail()
def test_case_01():
    print("===执行测试用例1===")
    assert 1 == 2


# 代码有异常,且和 raises 的异常类匹配,所以是 xfail 。
@pytest.mark.xfail(raises=ZeroDivisionError)
def test_case_02():
    print("===执行测试用例2===")
    i = 1 / 0


if __name__ == '__main__':
    pytest.main(["-s"])
    # XFAIL ===执行测试用例1=== 
    # XFAIL ===执行测试用例2===

六、结束语


“-------怕什么真理无穷,进一寸有一寸的欢喜。”

微信公众号搜索:饺子泡牛奶

文章来源:https://blog.csdn.net/weixin_48776531/article/details/135301521
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。