如何在unittest-pytest中替换函数内部的变量
How to replace variable inside function in unittest- pytest
我在必须测试的方法内部替换变量时遇到问题,即:
def find_files(path):
path_dir = os.listdir(path)
...
并且为了测试的需要,我必须将 path_dir
从 os.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)
我在必须测试的方法内部替换变量时遇到问题,即:
def find_files(path):
path_dir = os.listdir(path)
...
并且为了测试的需要,我必须将 path_dir
从 os.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)