如何使用 monkeypatch 测试没有 return 的函数

How test a function that doesn't have a return with monkeypatch

我正在 运行 我的项目中进行一些单元测试,我有一个函数 return 没有任何作用。我开始使用 monkeypatch、pytests 和 Python 3.8 进行测试。下面,我正在尝试执行测试的这段代码的一部分可用。

def test_start_download(monkeypatch):
    def mock_get_file(self, x, y, z):
        assert z == function.get('foo')[0]


    monkeypatch.setattr(Bar, 'foo', lambda x: 'valid_token')
    monkeypatch.setattr(Foo, 'bar', lambda x, y, z: foo_bar)
    monkeypatch.setattr(FooBar, 'foo', mock_get_file)
    monkeypatch.setattr(BarFoo, 'foo', lambda x, y: 'file')

    function.call(1861, 'key', 'C:/User')

这个函数调用对我来说return没有任何结果,它只是一个下载文件的函数。

it is just a function that download a file.

然后测试文件是否出现在它应该出现的位置:

function.call(1861, 'key', 'C:/User')
assert os.path.exists('C:/User/key')  # or whatnot

您可能希望使用 the tmp_path fixture 来避免污染文件系统:

def test_start_download(monkeypatch, tmp_path):
   # ...
   function.call(1861, 'key', str(tmp_path))
   assert (temp_path / 'key').exists()