簡體   English   中英

如何重寫函數python?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM