我环顾四周,但仍然不知道如何模拟在函数内部使用的库并断言其已正确调用。
a.py
import win32clipboard
def copy():
win32clipboard.OpenClipboard()
win32clipboard.EmptyClipboard()
win32clipboard.SetClipboardText('dummy')
win32clipboard.CloseClipboard()
test_a.py
import a
import pytest
def test_copy():
# Mock win32clipboard somehow
# Run a.copy()
# assert mock win32clipboard.call_count == 4
最佳答案
您的方法有误。win32clipboard
是一个库,其中包含一些类和方法。您必须模拟该库中要使用的每个类(OpenClipboard
,EmptyClipboard
,SetClipboardText
和CloseClipboard
)
import a
import pytest
from unittest.mock import patch
@patch('win32clipboard.OpenClipboard')
@patch('win32clipboard.EmptyClipboard')
@patch('win32clipboard.SetClipboardText')
@patch('win32clipboard.CloseClipboard')
def test_copy(mock_close, mock_set, mock_empty, mock_open):
a.copy()
assert mock_close.called
assert mock_set.called
assert mock_empty.called
assert mock_open.called