在 pytest 中,可以使用内置的 fixture 来请求一个唯一的临时目录,从而在测试函数中隔离测试环境。具体做法是在测试函数的函数签名中包含 `tmp_path` 参数。当 pytest 运行测试时,它会自动查找并调用相应的 fixture 工厂来创建资源。在测试函数执行之前,pytest 会为每次测试调用创建一个唯一的临时目录。测试结束后,该目录会自动清理。这使得开发者可以在测试中安全地使用临时文件和目录,而无需担心资源泄露或不同测试之间的干扰。
例如,在一个名为 `test_tmp_path.py` 的文件中,如果定义了如下测试函数:
```python
def test_needsfiles(tmp_path):
print(tmp_path)
assert 0
```
当运行 `pytest -q test_tmp_path.py` 时,输出会显示一个类似 `PYTEST_TMPDIR/test_needsfiles0` 的路径,这表明 pytest 创建了一个唯一的临时目录。测试结束后,该目录会被清理。