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

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

在類之間使用相同的變量和持續的單元測試

在類之間使用相同的變量和持續的單元測試

慕森王 2022-06-02 14:34:05
我有一半希望有人將此標記為重復,但如果是,我找不到相關問題。我有一個情況,我有 2 個測試類,其中 ClassA 需要設置 x,而 ClassB 重用設置 x,但還有一個額外的步驟 y。import my_module as mclass TestClassA(unittest.TestCase):    def setUp()        self.a = 1        self.b = 2        self.c = 3        self.d = m.initialiase_function(self.a, self.b, self.c)    def test1(self)        pass    def test2(self)        passclass TestClassB(unittest.TestCase):    def setUp():        self.a = 1        self.b = 2        self.c = 3        self.d = m.initialise_function(self.a, self.b, self.c)        m.complete_function(self.c)    def test3(self):        pass    def test4(self):        pass我嘗試過使用setUpModule(),但這只是意味著我global在每個測試類中也需要大量語句,而且這似乎也不是正確的“pythoninc”做事方式。我還嘗試將所有測試放在同一個類中,因此他們從 共享設置,然后作為 的一部分ClassA調用,但是我的測試無法運行。m.complete_function()test3在這種特殊情況下,進行兩次設置和拆卸可能不是很大的開銷,但我也想找出“正確”的方法以供將來參考。
查看完整描述

1 回答

?
慕姐4208626

TA貢獻1852條經驗 獲得超7個贊

很簡單:將通用代碼分解出來,使其位于一個單獨的函數中,然后self從每個方法中調用它(如果適合您的情況,可以使用作為參數和稍微不同的配置選項)setUp()。這樣可以避免重復定義。

如果你還想重用你創建的狀態,你需要一個共享命名空間中的變量來存儲創建的狀態。通常這將是一個單例,附加在模塊級別或一些常見的超類上;但您也可以設置一些注冊表對象來保存引用,這樣您就可以同時擁有多個實例。但是,根據我的經驗,每個測試通常都會進行自己的設置,即使這意味著重復工作,以確?!皧A具”沒有被早期測試無意中修改。


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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