用例执行完成后,每条用例都有自己的状态,常见的状态有:
fixture
不存在,fixture
里面有报错等。)@pytest.mark.xfail()
。)passed 表示测试通过。
import pytest
def test_case_01():
a = 1
# 断言通过。
assert 1 == a
if __name__ == '__main__':
pytest.main(["-s"])
# PASSED
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 表示内部代码错误。
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 表示标记测试用例预期会失败的情况(需要加
@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===
“-------怕什么真理无穷,进一寸有一寸的欢喜。”
微信公众号搜索:饺子泡牛奶。