pytest学习和使用14-Pytest用例执行结果有哪几种状态?

2023-02-20 13:19:14 浏览数 (2)

1 用例执行状态

状态

说明

passed

测试通过

failed

断言失败

error

用例本身代码报错

xfail

预期失败,加了 @pytest.mark.xfail()

2 xfail示例

代码语言:python代码运行次数:0复制
# -*- coding:utf-8 -*-

# 作者:NoamaNelson

# 日期:2022/12/27 

# 文件名称:test_case_status.py

# 作用:用例的执行状态

# 联系:VX(NoamaNelson)

# 博客:https://blog.csdn.net/NoamaNelson



import pytest



# 断言装饰器

@pytest.mark.xfail(raises=ZeroDivisionError)

def test_f():

    1 / 0



if __name__ == '__main__':

    pytest.main(["-s", "test_case_status.py"])
代码语言:python代码运行次数:0复制
test_case_status.py::test_f XFAIL       [100%]

@pytest.mark.xfail(raises=ZeroDivisionError)

    def test_f():

>       1 / 0

E       ZeroDivisionError: division by zero



test_case_status.py:14: ZeroDivisionError





============================= 1 xfailed in 0.07s ==============================

3 failed示例

代码语言:python代码运行次数:0复制
# -*- coding:utf-8 -*-

# 作者:NoamaNelson

# 日期:2022/12/27 

# 文件名称:test_case_status.py

# 作用:用例的执行状态

# 联系:VX(NoamaNelson)

# 博客:https://blog.csdn.net/NoamaNelson



import pytest



# failed

@pytest.fixture()

def sum():

    add = 3   5

    assert add == 8

    return add

    

def test_case(sum):

    assert sum == 9





if __name__ == '__main__':

    pytest.main(["-s", "test_case_status.py"])
代码语言:python代码运行次数:0复制
sum = 8



    def test_case(sum):

>       assert sum == 9

E       assert 8 == 9



test_case_status.py:24: AssertionError

=========================== short test summary info ===========================

FAILED test_case_status.py::test_case - assert 8 == 9

============================== 1 failed in 0.07s ==============================

4 error示例

  • 正常情况:
代码语言:python代码运行次数:0复制
# -*- coding:utf-8 -*-

# 作者:NoamaNelson

# 日期:2022/12/27 

# 文件名称:test_case_status.py

# 作用:用例的执行状态

# 联系:VX(NoamaNelson)

# 博客:https://blog.csdn.net/NoamaNelson



import pytest



@pytest.fixture()

def userinfo():

    name = "zhang"

    assert name == "zhang"

    return name



def test_case(userinfo):

    assert userinfo == "zhang"





if __name__ == '__main__':

    pytest.main(["-s", "test_case_status.py"])
代码语言:python代码运行次数:0复制
test_case_status.py::test_case PASSED [100%]



============================== 1 passed in 0.02s ==============================
  • 我们把@pytest.fixture()去掉,就会error
代码语言:python代码运行次数:0复制
# -*- coding:utf-8 -*-

# 作者:NoamaNelson

# 日期:2022/12/27 

# 文件名称:test_case_status.py

# 作用:用例的执行状态

# 联系:VX(NoamaNelson)

# 博客:https://blog.csdn.net/NoamaNelson



import pytest



def userinfo():

    name = "zhang"

    assert name == "zhang"

    return name



def test_case(userinfo):

    assert userinfo == "zhang"





if __name__ == '__main__':

    pytest.main(["-s", "test_case_status.py"])
代码语言:python代码运行次数:0复制
=================================== ERRORS ====================================

_________________________ ERROR at setup of test_case _________________________

file F:pytest_studytest_casetest_gtest_case_status.py, line 31

  def test_case(userinfo):

E       fixture 'userinfo' not found

>       available fixtures: cache, capfd, capfdbinary, caplog, capsys, capsysbinary, cov, doctest_namespace, metadata, monkeypatch, no_cover, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, worker_id

>       use 'pytest --fixtures [testpath]' for help on them.



F:pytest_studytest_casetest_gtest_case_status.py:31

=========================== short test summary info ===========================

ERROR test_case_status.py::test_case

============================== 1 error in 0.03s ===============================

0 人点赞