我有这段代码要在some_module.py中单独测试
Sub CommandButton1_Click()
pdfName = ActiveSheet.Range("G5") 'PDF name
ChDir ActiveWorkbook.Path & ":" 'Use the files directory
FileSaveName = ActiveSheet.Range("G5") 'Name the PDF file
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
FileSaveName, Quality:=xlQualityStandard, IncludeDocProperties:=True, OpenAfterPublish:=False
MsgBox "File Saved as " & " " & FileSaveName
End Sub
而且我无法有效地模拟tarfile方法,因此无需从实际文件中读取就可以模拟tar文件,我目前的尝试如下所示
targetWeekStart.plusDays(daysBetweenSourceWeekStartAndDayToCopy)
这不起作用,在测试方法中对“ getmembers”的调用只会返回另一个MagicMock对象,而不是我提供的字符串列表,因此不会进行应有的迭代。过去我已经通过类似的行为实现了我的目的,但是我不明白为什么这在这里行不通。
答案 0 :(得分:3)
您在return_value
和open_mock
之间缺少getmembers
。定义完模拟之后,您需要说一下该模拟方法将要返回的内容。 那就是您要在要测试的方法中调用getmembers
的内容。您的测试将如下所示:
import tarfile
from unittest.mock import patch, Mock
from some_module import function_to_test
def test_DeepLabModel_unexistent_error():
tar_path = "/path/to/nowhere"
with patch.object(tarfile, 'open', autospec=True) as open_mock:
open_mock.return_value.getmembers.return_value = ['a','b']
get_members(tar_path)
请注意,我也将导入移动到了顶部。