我需要在一个测试用例中伪造sys.stdout.istty()
的返回值。使用monkeypatch.setattr("sys.stdout.isatty", lambda: True)
进行Monkeypatching是不可选项,因为在使用选项-s
时,它与pytest stdout捕获冲突。如何在测试用例级别上伪造?
答案 0 :(得分:0)
Python does not allow monkey-patching built-in types such as file.。 sys.stdout
is a file object.补丁必须应用于生产代码模块名称空间(<module>.sys.stdout
)。使用pytest-mock
(夹具mocker
)时,外观如下:
def test_of_prod_code_with_dependency(mocker):
stdout_mock = mocker.patch("<module>.sys.stdout")
stdout_mock.isatty.return_value = istty
# production code which depends on sys.stdout.isatty() comes here