我有一半希望有人將此標記為重復,但如果是,我找不到相關問題。我有一個情況,我有 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具”沒有被早期測試無意中修改。
添加回答
舉報
0/150
提交
取消