如何使用 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()
我正在 运行 我的项目中进行一些单元测试,我有一个函数 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()