只对一个测试操作pytest命令行参数

时间:2014-07-28 19:17:57

标签: python fabric pytest

是否可以通过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的捕获,则此测试失败。

1 个答案:

答案 0 :(得分:0)

可以使用request.config.pluginmanager.getplugin('capturemanager').suspendcapture().resumecapture()来处理此问题。

但这是一个相当罕见的用例,通常不需要。我现在能想到的唯一两个合理的案例是pdb和pytest-timeout插件。因此,更多地解释一下您的用例可能会有所帮助。