章节目录:
- 一、用例状态类型
- 二、passed
- 三、failed
- 四、error
- 五、xfail
- 六、结束语
一、用例状态类型
用例执行完成后,每条用例都有自己的状态,常见的状态有:
- passed:测试通过。
- failed:断言失败。
- error:内部代码错误。(譬如:
fixture
不存在,fixture
里面有报错等。) - xfail:标记测试用例预期会失败的情况。(需要加
@pytest.mark.xfail()
。)
二、passed
passed 表示测试通过。
- 用例正常执行或断言通过:
import pytestdef test_case_01():a = 1# 断言通过。assert 1 == aif __name__ == '__main__':pytest.main(["-s"])# PASSED
三、failed
failed 表示测试失败。
- 断言失败导致:
import pytestdef test_case_01():a = 1# 断言不通过。assert 2 == aif __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 Exceptionif __name__ == '__main__':pytest.main(["-s"])# FAILED# 用例执行期间抛出异常。
四、error
error 表示内部代码错误。
- 调用了错误的 fixture:
import pytest@pytest.fixture()
def query():name = "jan"# 断言不通过。assert "rose" == namereturn 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 / 0if __name__ == '__main__':pytest.main(["-s"])# XFAIL ===执行测试用例1=== # XFAIL ===执行测试用例2===
六、结束语
“-------怕什么真理无穷,进一寸有一寸的欢喜。”
微信公众号搜索:饺子泡牛奶。