我有一個tastypie REST API資源,比如說叫Resource
,它的obj_get
方法中導入並使用了一個叫做get_token
的函數,它的編號爲libs.utils
。模擬補丁不能正確替換功能
因此,爲了測試這個資源,在我的測試類,我創建像什麼如下測試:
mock_get_token = Mock(return_value="something")
@patch("path.to.resource.get_token", mock_get_token)
def test_get_token(self):
params = {"args": "args"}
# following call should call the get_token function in the resource
response = self.client.get("path/to/resource", params)
# do things with the response and make sure I get right output
所以,當我通過自身運行測試中,@patch正常工作和預期,更換功能與模擬功能。但是,在我們的應用程序的較大測試套件中運行測試會導致修補程序失敗。
做一些事情,比如手動嘗試用模擬函數代替函數也有一個不成功的補丁。我想知道還有什麼可能導致這個問題,我發現它非常好奇,當測試是由自己或我們的測試套件的一個較小的子集運行時,該補丁正常工作。