[英]How to override a function python?
我有一些想要快速測試的代碼。 這段代碼包含需要查詢服務器並獲得正確/錯誤答案的行:
result = server.queryServer(data)
有沒有一種方法可以覆蓋此函數調用,以便僅調用始終返回True的本地函數(以便我可以在不運行服務器的情況下進行調試)?
模擬是你的朋友。 它允許您模擬它們的整個類或函數。
您想要的就是所謂的模擬 ,用臨時對象替換現有對象,這些臨時對象在測試中的行為有所不同。
使用unittest.mock
庫執行此操作。 它將為您創建臨時對象,並在測試期間為您提供替換對象和恢復舊狀況的工具。
該模塊提供修補程序來進行替換。 例如,您可以使用上下文管理器:
from unittest import mock
with mock.patch('server.queryServer') as mocked_queryServer:
mocked_queryServer.return_value = True # always return True when called
# test your code
# ...
# afterwards, check if the mock has been called at least once.
mocked_queryServer.assert_called()
我在那末添加了一個斷言。 模擬對象不僅可以透明地替換函數,還可以記錄它們發生的情況,從而可以通過調用模擬來檢查代碼是否正常工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.