2012-01-22 2 views
3

파이썬의 unittest.Testcase 인 BasicTest의 서브 클래스를 만들고 싶습니다. BasicTest의 각 하위 클래스에서 main에서 같은 루틴을 실행하고 싶습니다. 이것을 어떻게 할 수 있습니까?subthon python unittest.Testcase, 같은 주체 호출하기

예 :

in basic_test.py: 

class BasicTest(unittest.TestCase): 

    ... 


if __name__ == '__main__': 
    # Do optparse stuff 
    unittest.main() 



in some_basic_test.py: 

class SomeBasicTest(BasicTest): 
    ... 

if __name__ == '__main__': 
    #call the main in basic_test.py 
+0

Related : [테스트를하기 전에 파이썬의 unittest 모듈을 사용할 때 테스트 전에 초기화 코드를 실행하는 법?] (0120-13756) –

답변

2
# basic_test.py 
class BasicTest(unittest.TestCase): 

    @staticmethod 
    def main(): 
    # Do optparse stuff 
    unittest.main() 

if __name__ == '__main__': 
    BasicTest.main() 



# some_basic_test.py 
class SomeBasicTest(BasicTest): 
    ... 

if __name__ == '__main__': 
    BasicTest.main() 
+1

'BasicTest'에서 상속 한 클래스가 두 개 이상 있다면? 테스트 모듈? 초기화 코드 ('BasicTest.main()')는 각 테스트 케이스에서 메소드를 실행하기 전에 한 번만 실행됩니다. –

1

당신은 (재) 수는, 새로운 주요으로 모듈을 가져 따라서 if __name__=="__main__" 코드의 종류에 연결할 수 없습니다.

Dor의 제안이나 비슷한 내용이 가장 합리적인 것처럼 보입니다. 그러나 해당 모듈에 대한 액세스 권한이없는 경우 모듈을 기본 모듈로 실행하는 runpy.run_module()을 고려해보십시오.

1

내가

주요

에서 같은 루틴을 실행하는 BasicTest의 각 서브 클래스를 원하는 나는 당신이 원하는 것은 어떤 테스트 케이스에서 테스트를 실행하기 전에 몇 가지 설정/초기화 코드를 실행하는 것 같아요. 이 경우 setUpClass 클래스 메서드에 관심이있을 수 있습니다.

testA.py

import unittest 


class BasicTest(unittest.TestCase): 

    @classmethod 
    def setUpClass(cls): 
     print 'Preparing to run tests' 


class TestA(BasicTest): 

    def test1(self): 
     print 'testA: test1' 

    def test2(self): 
     print 'testA: test2' 


if __name__ == '__main__': 
    unittest.main() 

testB.py testA.py에서

import unittest 

from testA import BasicTest 


class TestB(BasicTest): 

    def test1(self): 
     print 'testB: test1' 

    def test2(self): 
     print 'testB: test2' 


if __name__ == '__main__': 
    unittest.main() 

출력 : testB.py에서

Preparing to run tests 
testA: test1 
testA: test2 
.. 
---------------------------------------------------------------------- 
Ran 2 tests in 0.000s 

OK 

출력 :

Preparing to run tests 
testB: test1 
testB: test2 
.. 
---------------------------------------------------------------------- 
Ran 2 tests in 0.000s 

OK 
+0

unittest.main()이 호출되기 전에 일부 명령 줄 인수를 구문 분석해야합니다. 따라서 setUpClass를 사용할 수 없습니다 – stackOverlord

관련 문제