我应该如何编写这个测试?我已经尝试了列出的各种选项,但每个选项都返回相同的失败测试:
import zipfile
from mock import Mock, patch
def unzip_file(fp):
with zipfile.ZipFile(fp, 'r') as z:
z.extractall('dir')
@patch('zipfile.ZipFile')
def test_unzip_file(m_zipfile):
# I have tried the following...
# m_zipfile.__enter__.extractall = Mock()
# m_zipfile.extractall = Mock()
# m_zipfile.return_value.__enter__.return_value = Mock()
m_zipfile.return_value.__enter__.return_value.extractall = Mock()
unzip_file('test')
m_zipfile.assert_called_with('test', 'r') # this test passes
m_zipfile.extractall.assert_called_with('dir') # this test fails
我尝试使用this answer作为指导,但我仍然不知道如何正确地做到这一点。我们代码中的实际函数更复杂,有额外的参数,但我尝试首先从基础开始。
失败...
E AssertionError: expected call not found.
E Expected: extractall('dir')
E Actual: not called.
1条答案
按热度按时间qco9c6ql1#
已经非常接近了,只需要在上下文管理器中引用mock来进行Assert