pytest 使用自定义选项

2 投票
2 回答
2219 浏览
提问于 2025-04-18 08:26

我正在学习pytest,准备在我们的实验室使用。我们有多台机器,每台机器的测试配置都不一样。每台机器都有自己的conftest文件,里面包含了特定于该测试环境的参数,比如测试盒子的IP地址等等。pytest是从每台本地机器上运行的(比如从../pytest/cfg/machine1),这个目录里有它的conftest文件。而pytest的可执行文件是在一个远程目录里。所以运行的命令是:

# ../pytest/cfg/machine1 py.test -vs  /dir/path/to/pytest/executable

这之前一切都很好,直到我添加了一个自定义选项。现在pytest似乎找不到我运行它的目录里的conftest文件了。我发现了一个没有文档说明的选项--confcutdir,这个选项似乎能解决这个问题。

这个解决方案好吗?为什么会出现这个问题呢?pytest的文档对这个失败的原因和如何解决都没有很清楚的说明。

2 个回答

0

可以考虑试试这个叫做“分子”的测试框架:https://molecule.readthedocs.io/

它是用pytest和testinfra这两个库来工作的。实际上,我在不同的环境和服务器上运行同一组测试时,效果非常好。你可以保持conftest文件不变,只需要根据你的环境来配置molecule.yml文件就可以了。

0

我的感觉是,你很可能需要用到pytest-xdist这个工具。它可以让你在远程机器上运行测试。这里有相关的文档。在你的情况中,它并不是把测试分散到不同的机器上,而是让所有机器上都运行相同的测试。这样,你就可以根据实际运行测试的机器,直接在一些设置中调整测试配置。

这不是直接的答案,而是一个建议,告诉你如何可以改善你的测试。这样一来,你最开始遇到的问题就不会再出现了。

撰写回答