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

时间:2018-05-09 12:26:51

标签: python pytest

我有一个问题,我需要测试替换变量里面的方法,即:

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

并且对于测试需求,我必须将path_diros.listdir的实际结果替换为某个测试列表,即['whatever1.txt', 'whatever2.txt', 'whatever3.txt']

怎么做? BR,Damian

2 个答案:

答案 0 :(得分:2)

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

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)

答案 1 :(得分:0)

你应该尝试模拟os.listdir来返回模拟测试数据。