是否可以通过fixture或任何其他方法设置pytest的-s命令行参数? 我想要实现的是为我的一个测试启用-s(capture = no)选项吗?
我正在考虑从测试中或通过夹具操作此选项的方法。
举一个需要禁用捕获的测试示例是一个非常简单的测试:
from fabric.state import env
from fabric.operations import run
class TestCapture:
def test_fabric(self):
env.user = '<ssh_username>'
env.password = '<ssh_password>'
env.host_string = '<hostname>'
who = run('whoami').stdout # use fabric command run to invoke whoami on <hostname>
assert who == '<username>'
在此测试中,结构用于通过ssh在另一台计算机上登录,并运行whoami命令。结果应该是登录用户的名称。
如果启用了pytest的捕获,则此测试失败。
答案 0 :(得分:0)
可以使用request.config.pluginmanager.getplugin('capturemanager').suspendcapture()
和.resumecapture()
来处理此问题。
但这是一个相当罕见的用例,通常不需要。我现在能想到的唯一两个合理的案例是pdb和pytest-timeout插件。因此,更多地解释一下您的用例可能会有所帮助。