你能有 patch.multiple 为每个补丁设置 new_callable 吗?

问题描述 投票:0回答:0

我有这个夹具来获取这个文件中的所有测试,以便为代码使用的文件和目录使用 pytest 临时目录:

import src.recurrent_admin.restic_backup_task as restic_task 
...

@pytest.fixture(autouse=True)
def mock_path_strs(tmpdir):        
    tmpdir_path = pathlib.Path(str(tmpdir))
    testing_repo_dir_path = tmpdir_path.joinpath('repo_dir')
    mock_repo_dir_path_str = mock.PropertyMock(return_value=(str(testing_repo_dir_path)))
    testing_pwd_file_path = tmpdir_path.joinpath('pwd_file.txt')
    mock_pwd_file_path_str = mock.PropertyMock(return_value=(str(testing_pwd_file_path)))
    testing_src_dir_path = tmpdir_path.joinpath('src_dir')
    mock_src_dir_path_str = mock.PropertyMock(return_value=(str(testing_src_dir_path)))
    with mock.patch.object(restic_task, 'REPO_DIR_PATH_STR', new_callable=mock_repo_dir_path_str):
        with mock.patch.object(restic_task, 'PWD_FILE_PATH_STR', new_callable=mock_pwd_file_path_str):
            with mock.patch.object(restic_task, 'SRC_DIR_PATH_STR', new_callable=mock_src_dir_path_str):
                yield

这完成了工作......但我想知道是否可以使用

mock.patch.multiple
,但以某种方式为每个单独的项目设置
new_callable

mocking pytest patch fixtures
© www.soinside.com 2019 - 2024. All rights reserved.