本文引用自霍格沃兹测试开发学社录播课
经典面试题-pytest 的内置 fixture
霍格沃兹测试开发学社
http://ceshiren.com
问题
面试官可能会问:Pytest 的内置 fixture 有哪些?
考察点分析
面试官主要的目的是想要了解:
- pytest 的 fixture 是什么
- pytest 的常用内置 fixture
技术点
这个问题涉及到的技术知识有:
- pytest 的 fixture 的概念
- pytest 的常用内置 fixture 清单
- pytest 的常用内置 fixture 的使用方法
fixture 的概念
- 是一种使用
@pytest.fixture
定义的函数 - 通常在具体的测试函数之前或是之后运行
内置 fixture 清单
- 查看 fixture :
pytest --fixtures
cache -- ..._pytestcacheprovider.py:510
Return a cache object that can persist state between testing sessions.
capsys -- ..._pytestcapture.py:878
Enable text capturing of writes to ``sys.stdout`` and ``sys.stderr``.
capsysbinary -- ..._pytestcapture.py:895
Enable bytes capturing of writes to ``sys.stdout`` and ``sys.stderr``.
......
内置 fixture: request
request
def test_request_fixture(request):
print(f"发现的测试用例: {request.session.testscollected}")
print(f"失败的测试用例: {request.session.testsfailed}")
内置 fixture: capsys
capsys
import sys
def test_capsys_fixture_stdout(capsys):
print("Hogwarts", end="")
captured = capsys.readouterr()
assert "Hogwarts" == captured.out
def test_capsys_fixture_stderr(capsys):
sys.stderr.write("ERROR")
captured = capsys.readouterr()
assert "ERROR" == captured.err
内置 fixture: tempdir
tempdir
def test_tempdir_fixture(tmpdir):
print(f"临时目录: {tmpdir}")
总结
Pytest 的内置 fixture 有哪些?
- pytest fixture 是一种使用
@pytest.fixture
定义的,通常在具体的测试函数之前或是之后运行的函数 - 可以使用
pytest --fixtures
查看 pytest 的所有 fixture 清单 - 常用的内置fixture有:
- request:用来获取测试函数请求信息
- capsys:用来访问被捕获的系统输出
- tempdir:用来获取一个临时目录: