pytest 小记

1.如何在case失败后做操作?

需要在conftest文件中加入函数 pytest_exception_interact 如下:

def pytest_exception_interact(node, call, report):
    if report.failed:
        # do somethings
        pass

2.如何在整个测试流程结束后(整个pytest执行完毕)做操作

需要在conftest文件中加入函数 pytest_sessionfinish

# 整个测试session后执行一次
def pytest_sessionfinish(session, exitstatus):
    # do somethings
    pass

 3.更改工作目录到脚本目录

以下函数级fixture将切换到测试用例目录,直接放入 conftest.py 文件中即可

# 每次测试时候切换工作目录到脚本目录
@pytest.fixture(autouse=True)
def change_test_dir(request):
    os.chdir(request.fspath.dirname)
    yield
    os.chdir(request.config.invocation_dir)
  • fspath是正在执行的测试模块的LocalPath
  • dirname是测试模块的目录
  • request.config.invocationdir-从中执行pytest的文件夹
  • request.config.rootdir-pytest root,不会根据您运行pytest的位置进行更改。此处未使用,但可能有用。
posted @ 2021-04-20 17:13  风,又奈何  阅读(219)  评论(0编辑  收藏  举报