2013-12-16 5 views
5

우리 웹 어플리케이션 중 하나를 명확하게 테스트하는 동안 을 생성하고 unittest.TestCase을 상속 받았습니다. BaseTestClass에는 내 <Page>Test 클래스가 각각 상속받은 내 setUp()tearDown() 메서드가 포함되어 있습니다.Python unittest는 기본 테스트 클래스를 사용할 때 테스트를 건너 뜁니다.

비슷한 차이가있는 비슷한 장치를 사용하는 다른 장치로 인해 @unittest.skipIf() 데코레이터를 사용하려고했지만 그 증명이 어렵습니다. BaseTestClass에서 데코레이터를 '상속'하는 대신, 데코레이터를 사용하려고 시도하면 이클립스가 으로 unittest.TestCase을 자동으로 가져 오려고 시도하는데 이는 나에게 맞지 않는다.

Base을 사용할 때 skip 데코레이터를 사용할 방법이 있습니까? 별도의 모듈에서 테스트 클래스의

class BaseTestClass(unittest.TestCase): 

    def setUp(): 
     #do setup stuff 
     device = "Type that blocks" 

    def tearDown(): 
     #clean up 

하나 :

class ConfigPageTest(BaseTestClass): 

    def test_one(self): 
     #do test 

    def test_two(self): 
     #do test 

    @unittest.skipIf(condition, reason) <<<What I want to include 
    def test_three(self): 
     #do test IF not of the device type that blocks 

답변

2

는 분명히 이것은 unittest2 필요 (또는 파이썬 3, I 가정)하지만, 그 이외의, 당신의 예는 아주 가까이 있었다. 실제 테스트 코드의 이름이 유닛 테스트 검색 메커니즘 (코에 대해 test_*.py)에 의해 발견되는지 확인하십시오.

#base.py 
import sys 
import unittest2 as unittest 

class BaseTestClass(unittest.TestCase): 

    def setUp(self): 
     device = "Type that blocks" 
    def tearDown(self): 
     pass 

그리고 실제 코드에서

은 : 출력을

.S. 
---------------------------------------------------------------------- 
Ran 3 tests in 0.016s 

OK (SKIP=1) 
+0

감사를 제공

# test_configpage.py from base import * class ConfigPageTest(BaseTestClass): def test_one(self): pass def test_two(self): pass @unittest.skipIf(True, 'msg') def test_three(self): pass 

, 나는 와일드 카드 가져 오기를 사용하여 생각하지 않을 것입니다. –

관련 문제