2015-09-10 120 views
1

發射試驗方法我有2個教學班,功能測試防止繼承從孩子

class VehicleTest(unittest.TestCase): 
     def setUp(self): 
      self.browser = webdriver.Firefox() 

     def test_math(self): 
      self.assertEqual(1+1, 2) 


class VehicleTestCase2(VehicleTest): 
     def setUp(self): 
      super(VehicleTestCase2, self).setUp() 
      self.do_some_additional_stuff() 

     def test_another_math(self): 
      self.assertEqual(2+2, 4) 

由於測試跑步我用nosetests。當我走在test目錄,類型nosetests安慰和敲回車,我看到了3次測試,其中順序推出

VehicleTest.test_math, VehicleTestCase2.test_another_math, VehicleTest.test_math 

問: 如何防止nosetests從子類發起父類的測試?所以,我只有這些測試推出

VehicleTest.test_math, VehicleTestCase2.test_another_math 

我想排除從發射VehicleTestCase2測試繼承。

回答

1

拆分VehicleTest以便您擁有一個基類,其中只包含所有類共有的基類,並創建一個包含test_math的類。喜歡的東西:上面

class VehicleTest(unittest.TestCase): 
     def setUp(self): 
      self.browser = webdriver.Firefox() 


class VehicleTestCase1(VehicleTest): 
     def test_math(self): 
      self.assertEqual(1+1, 2) 


class VehicleTestCase2(VehicleTest): 
     def setUp(self): 
      super(VehicleTestCase2, self).setUp() 
      self.do_some_additional_stuff() 

     def test_another_math(self): 
      self.assertEqual(2+2, 4) 

代碼VehicleTest是你的基類,VehicleTestCase1是新類。

我不建議試圖找到一個技巧,讓基類包含一些稍後在某些派生類中被抑制的測試。這隻會掩蓋你的代碼的邏輯。