[英]How do I mock and unit test the following code?
import module
from x import X
class A:
def method():
return module.something(arg=X())
我創建了以下內容進行單元測試:
with patch('filename.module.something') as something_mock:
with patch('filename.X'): as x_mock:
a.method()
something_mock.assert_called_once_with(arg=x_mock.return_value)
x_mock.assert_called_once_with()
有人提到無需解釋就無需模擬filenme.X
。 還有其他方法可以在不模擬filename.X
情況下驗證對something
的調用嗎? 我將如何更改以下斷言來驗證呼叫?
something_mock.assert_called_once_with(arg=_____)
如果create X
不是問題(即數據庫連接或網絡訪問),則可以進行測試而無需模擬它。
您有以下選擇:
something_mock
,請使用mock
的called
屬性 arg
關鍵字arg是否調用了something_mock
,但是對值是什么不感興趣,請使用mock.ANY
call_args
提取something_mock
調用參數,並通過調用作為元組提取arg
值 第一個是
assert something_mock.called
第二個是
something_mock.assert_called_once_with(arg=mock.ANY)
最后第三個是
args, kwargs = something_mock.call_args
assert isinstance(kwarg['arg'], x.X)
最后一個選項與模擬X
完全相同,但我寫它只是為了顯示所有可能性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.