def test_config_monkeypatch(monkeypatch): monkeypatch.setenv('HOME', "./") import os print(f"monkeypatch: env={os.getenv('HOME')}") def test_config_monkeypat(): import os print(f"env={os.getenv('HOME')}") 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 输出 可以看到monke...
# test_monkeypatch.py def test_config_monkeypatch(tmpdir, monkeypatch): monkeypatch.setenv('HOME', tmpdir.mkdir('home')) dump_config(config) path = os.path.expanduser('~/.conf.json') expected = json.load(open(path, 'r', encoding='utf-8')) assert expected == config 1. 2. 3. 4...
def test_os(monkeypatch): # Specify the object and attribute to override monkeypatch.setattr(os.path, 'exists', lambda x: False) assert not os.path.exists('/') 除了設定屬性和覆寫方法之外,monkeypatch 固件還可以設定和刪除環境變數、變更字典值,以及修改系統路徑。 monkeypatch 固件會在每次測試後...
tmpdir Return a temporary directory path object which is unique to each test function invocation, created as a sub directory of the base temporary directory. The returned object is a `py.path.local`_ path object. .. _`py.path.local`: https://py.readthedocs.io/en/latest/path.html tmp_pa...
对于返回两个值的函数,我们可以使用monkeypatch来模拟返回值。下面是一个示例: 代码语言:txt 复制 def my_function(): return 1, 2 def test_my_function(monkeypatch): # 使用monkeypatch.setattr来替换my_function的返回值 monkeypatch.setattr("path.to.my_function", lambda: (3, 4)) # 调用my_function...
但在此测试中我们并不想真正发起网络请求,而是使用模拟响应。这时可以使用unittest.mock.patch.object或...
模拟一个object,是最常见的需求。由于function也是一个object,所以以function举例。 代码如下: import os def rm(filename): os.remove(filename) def test_rm(mocker): filename = 'test.file' mocker.patch('os.remove') rm(filename) PS D:\SynologyDrive\CodeLearning\WIN\pytest-book\src\chapter-5> ...
# 断言function_a的返回值是否正确 assert result == "Mocked result" 在上面的示例中,使用mocker.patch函数来模拟function_b的返回值。mocker.patch接受两个参数,第一个参数是要模拟的函数的名称,第二个参数是要返回的模拟值。 通过这种方式,我们可以使用pytest-mock库来模拟其他函数中的函数调用,以便在测试中进行...
monkeypatch TESTDIR recwarn tmp_path tmp_path_factory TMPDIR tmpdir_factory API参考-Fixtures 装置(Fixtures) 教程:pytest fixtures:显式,模块化,可扩展。 测试函数或其他Fixtures通过将它们声明为参数名称来RequestFixtures。 需要Fixtures的测试示例: deftest_output(capsys):print("hello")out,err=capsys.read...
monkeypatch装置允许您使用其他对象和函数干净地覆盖正在测试的系统的函数、对象和字典条目,并在测试拆卸期间撤消所有更改。例如: importgetpassdefuser_login(name): password = getpass.getpass() check_credentials(name, password) ... 在这段代码中,user_login使用标准库中的getpass.getpass()函数(docs.python....