如何动态更改pytest的tmpdir基目录

2022-03-01 00:00:00 python pytest temporary-files

问题描述

根据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

相关文章