如何在unittest-pytest中替换函数内部的变量

How to replace variable inside function in unittest- pytest

我在必须测试的方法内部替换变量时遇到问题,即:

def find_files(path):
    path_dir = os.listdir(path)
    ...

并且为了测试的需要,我必须将 path_diros.listdir 的真实结果替换为一些测试列表,即 ['whatever1.txt', 'whatever2.txt', 'whatever3.txt']

怎么做? BR,达米安

您应该尝试模拟 os.listdir 到 return 模拟测试数据。

您可以使用 mock.patch 为您的变量设置 return 值。 例如

with patch('os.listdir') as mocked_listdir:
    mocked_listdir().return_value = ['.', '..']
    find_files(path)

或者您可以设置 side effect

with patch('os.listdir') as mocked_listdir:
    mocked_listdir().side_effect = some_other_function
    find_files(path)