亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何模擬/修補整個班級?

如何模擬/修補整個班級?

守候你守候我 2021-09-02 14:56:05
我有以下代碼:pkg1/mock_class.py:class A:    def ma(self):        print(' class_A')class B:    def __init__(self):        self.var = 'vvv'    def mb(self):        a = A()        print('class_B')        a.ma()和測試代碼:from unittest import mockimport pytestfrom pkg1.mock_class import [email protected](scope='class')def mockA():    with mock.patch('pkg1.mock_class.A'):        yieldclass TestB:    def test_b(self, mockA):        b = B()        b.mb()我想使用fixture模擬整個A類(),并且我希望能夠在將來使用參數化配置一些返回值?;?- 只是像上面實現的模擬/修補不是工作類 B 被模擬,我不明白為什么。謝謝你的建議。
查看完整描述

1 回答

?
qq_遁去的一_1

TA貢獻1725條經驗 獲得超8個贊

上面的代碼工作正常,我認為它不起作用,因為在實際情況下它不是 - 我正在修補不正確的地方。

來自官方文檔(鏈接):

patch() 通過(臨時)將名稱指向的對象更改為另一個對象??梢杂性S多名稱指向任何單個對象,因此要使修補工作,您必須確保修補被測系統使用的名稱。

基本原則是在查找對象的位置打補丁,該位置不一定與定義的位置相同。幾個例子將有助于澄清這一點。


查看完整回答
反對 回復 2021-09-02
  • 1 回答
  • 0 關注
  • 180 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號