2010-01-21 5 views
1

나는 테스트 스위트를 가지고 있으며 내가 만든 테스트와 함께 작동 시키려고 노력 중이다. 테스트 작업은 개별적으로 실행하지만 테스트 스위트에서 모두 실행하려고합니다.테스트 스위트 unittest

class AbsoluteMoveTestSuite(unittest.TestSuite): 

def makeAbsoluteMoveTestSuite(): 
    suite = unittest.TestSuite() 
    suite.addTest(TestAbsoluteMove("BasicAbsolutePan")) 
    suite.addTest(TestAbsoluteMove("VerifyAbsolutePan")) 
    suite.addTest(TestAbsoluteMove("VerifyAbsoluteTilt")) 
    suite.addTest(TestAbsoluteMove("VerifyAbsolutePanSpeed")) 
    suite.addTest(TestAbsoluteMove("VerifyAbsoluteTiltSpeed")) 
    return suite 

def suite(): 
    return unittest.makeSuite(TestAbsoluteMove) 

주장을 생산 오류가없는 모듈이 없음 : 스위트와 링크 내 테스트 코드에이 코드를 배치 한

import unittest 

def suite(): 
    modules_to_test = ('TestAbsoluteMove', 'TestContinuousMove') # and so on 
    alltests = unittest.TestSuite() 
    for module in map(__import__, modules_to_test): 
     alltests.addTest(unittest.findTestCases(module)) 
    return alltests 

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

: 아래의 코드는 생성 된 테스트 스위트를 보여 'TestAbsoluteMove'및 TestContinuousMove '로 명명되었습니다. 누구든지이 코드를 작동시키는 법을 알고 있습니까?

감사

답변

2

Nose는 것은 생각할 필요도없는 이런 종류의 수 있습니다. 그것은 자동으로 테스트를 감지하고 스위트로 실행합니다. (특정 테스트를 실행하여 플래그를 전달할 수도 있습니다.)

+4

추가 종속성을 추가하는 것이이 질문에 대한 올바른 대답이라고 생각하지 않습니다. –

2

TestAbsoluteMove는 클래스이며 어딘가에서 올 필요가 있습니다. AbsoluteMoveTestSuite 클래스가 정의 된 곳이면 TestAbsoluteMove를 가져와야합니다.

0

unittest 이렇게 사용하는 것은 약간의 고통입니다. 앨리슨 (Alison)의 조언에 따라 nose을 보거나 내 개인적으로 좋아하는 Python 테스트 도구 py.test을 사용하는 것을 대단히 기뻐합니다. 특정 명명 규칙을 따르는 함수를 작성하고 찢어 버리십시오! 전체 xUnit은 파이썬 영역에 실제로 들어 맞지 않습니다.

2

이 내있는 TestSuite를 만드는 방법

def suite(): 
    """ returns all the testcases in this module """ 
    return TestLoader().loadTestsFromTestCase(AbsoluteMoveTestSuite) 

나는 모든 subsuites이 (모든 수입을 통지 통합 제품군을 한꺼번에 실행하는, 당신이 필요합니다 (loadTestFromTestCase 자동으로 테스트 감지)입니다

import sys 
import unittest 

import test.framework.asyncprocess as a 
import test.framework.easyconfig as e 
import test.framework.modulegenerator as mg 
import test.framework.modules as m 
import test.framework.filetools as f 
import test.framework.repository as r 
import test.framework.robot as robot 
import test.framework.easyblock as b 
import test.framework.variables as v 
import test.framework.github as g 
import test.framework.toolchainvariables as tcv 
import test.framework.toolchain as tc 
import test.framework.options as o 
import test.framework.config as c 


# call suite() for each module and then run them all 
SUITE = unittest.TestSuite([x.suite() for x in [r, e, mg, m, f, a, robot, b, v, g, tcv, tc, o, c]]) 

# uses XMLTestRunner if possible, so we can output an XML file that can be supplied to Jenkins 
xml_msg = "" 
try: 
    import xmlrunner # requires unittest-xml-reporting package 
    xml_dir = 'test-reports' 
    res = xmlrunner.XMLTestRunner(output=xml_dir, verbosity=1).run(SUITE) 
    xml_msg = ", XML output of tests available in %s directory" % xml_dir 
except ImportError, err: 
    sys.stderr.write("WARNING: xmlrunner module not available, falling back to using unittest...\n\n") 
    res = unittest.TextTestRunner().run(SUITE) 
+0

xmlrunner.XMLTestRunner (출력 = xml_dir, 자세한 정보 = 1) .run (SUITE)은 내가 찾고 있던 것입니다. –

관련 문제