我有一個功能叫做get_account(參數1,參數2)在運行時 我需要更換與功能mock_get_account此功能(參數1,參數2) 所以當系統調用get_account(參數1替換功能,param2)我需要調用mock_get_account(param1,param2)。與蟒蛇不同的功能
我試過這段代碼: package.get_account = self.mock_get_account package.get_account(X,Y) 但仍是get_account運行,而不是mock_get_account 我是新來的蟒蛇,我不知道這甚至可能,但我已經看到了lamda函數,並且我知道函數編程在python中是可能的。感謝 編輯: 如果我做到以下幾點:
package.get_account=self.mock_get_account
package.get_account(x,y)
然後每一件事情是確定的,這意味着mock_get_account被調用,但畝代碼我下面的代碼我做了後self.client.post(URL,數據=數據,請= TRUE)觸發package.get_account,這是行不通的:
package.get_account=self.mock_get_account
package.get_account(x,y)
#the folowing call will trigger the package.get_account(x,y) function in a django url #callback
self.client.post(url, data=data, follow=True)
這意味着它調用側的文件中定義的舊功能,也get_account(參數1,參數2),並且是不是類的子函數,mock_get_account(self,param1,param2)在類Test中定義,並在Test.test_account內部調用 - 功能
你所描述的應該可以正常工作。請給我們實際的代碼和結果。 –
你能發佈一些實際的代碼嗎?像這樣的修補程序在許多分佈式軟件包中使用,所以如果正確完成,它會工作。 –
如果我co以下:package.get_account = self.mock_get_account package.get_account(x,y),然後運行package.get_account每一件事情都可以,在下面的代碼中我做了一個職位self.client.post(url,data = data,follow = True)觸發package.get_account並且這不起作用,這意味着它打印舊函數,並且get_account(param1,param2)在文件的side中定義,並且不是類的子函數, mock_get_account(self,param1,param2)在Test類中定義,並在Test.test_account函數內部調用 – user1796624