pytest 使用自定义选项
我正在学习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这个工具。它可以让你在远程机器上运行测试。这里有相关的文档。在你的情况中,它并不是把测试分散到不同的机器上,而是让所有机器上都运行相同的测试。这样,你就可以根据实际运行测试的机器,直接在一些设置中调整测试配置。
这不是直接的答案,而是一个建议,告诉你如何可以改善你的测试。这样一来,你最开始遇到的问题就不会再出现了。