如何动态更改pytest的tmpdir基目录
问题描述
根据pytest documentation,可以覆盖默认临时目录设置,如下所示:
py.test --basetemp=/base_dir
如果随后在测试中使用tmpdir
装置.
def test_new_base_dir(tmpdir):
print str(tmpdir)
assert False
..。然后,屏幕上将打印类似以下内容的内容:
/base_dir/test_new_base_dir_0
这可以按预期工作,并且对于某些用例可能非常有用。
但是,我希望能够在每个测试(或者我应该说"每个装置")的基础上更改此设置。这样的事情可能吗?我几乎只是基于code for the original滚动我自己的tmpdir
,但我不想这样做--我希望在我能做到的现有功能之上构建,而不是复制它。
顺便说一句,我的特定用例是我正在编写一个Python模块,该模块将作用于不同类型的文件系统(NFS4等),如果能够产生tmpdir
的功能并能够创建以下装置,那就太好了:
def test_nfs3_stuff(nfs3_tmpdir):
... test NFS3 functionality
def test_nfs4_stuff(nfs4_tmpdir):
... test NFS4 functionality
解决方案
问题中提出的问题似乎没有很好的解决方案,所以我决定对py.test
进行两次调用:
- 为每个传入不同的
--basetemp
。 - 使用
@pytest.mark.my_mark
标记哪些测试需要使用非标准基元的特殊处理。 - 向每个调用传递
-k my_mark
或-k-my_mark
。
相关文章