Python 测试套件单元测试
我有一个测试套件,我正试图让它与我创建的测试一起工作。如果我单独运行它们,测试就可以工作,但我希望在一个测试套件中运行它们。下面的代码显示了创建的测试套件:Python 测试套件单元测试,python,unit-testing,testing,test-suite,Python,Unit Testing,Testing,Test Suite,我有一个测试套件,我正试图让它与我创建的测试一起工作。如果我单独运行它们,测试就可以工作,但我希望在一个测试套件中运行它们。下面的代码显示了创建的测试套件: import unittest def suite(): modules_to_test = ('TestAbsoluteMove', 'TestContinuousMove') # and so on alltests = unittest.TestSuite() for module in map(__impo
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')
我已将此代码放入我的测试代码中,以便与套件连接:
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)
产生的错误声明没有名为“TestAbsolutionMove”和“TestContinuousMove”的模块。有人知道如何让这个代码工作吗
谢谢让这类事情变得简单易懂。它将自动检测您的测试并将其作为套件运行。(您也可以通过传递一个标志来运行特定的测试。)使这类事情变得简单易懂。它将自动检测您的测试并将其作为套件运行。(您也可以通过向其传递标志来运行特定的测试。)TestAbsolutionMove是一个类,它需要来自某个地方。无论在哪里定义AbsoluteMoveTestSuite类,都需要导入TestAbsoluteMove。TestAbsoluteMove是一个类,它需要来自某个地方。无论在哪里定义AbsoluteMoveTestSuite类,都需要导入TestAbsoluteMove。
unittest
这样使用有点麻烦。我很想再次提醒您,请按照Alison的建议查看nose
,或者使用我个人最喜欢的Python测试工具。只需按照特定的命名约定创建函数,就可以了!整个xUnit并不真正适合Python领域。unittest
这样使用有点麻烦。我很想再次提醒您,请按照Alison的建议查看nose
,或者使用我个人最喜欢的Python测试工具。只需按照特定的命名约定创建函数,就可以了!整个xUnit并不真正适合Python领域。这就是我创建测试套件的方式(loadTestFromTestCase自动检测您的测试)
要同时运行它们,我有一个包含所有子套件的套件(注意所有导入,在新模块中提供它们之前,您需要导入它们)
这就是我创建测试套件的方式(loadTestFromTestCase自动检测您的测试) 要同时运行它们,我有一个包含所有子套件的套件(注意所有导入,在新模块中提供它们之前,您需要导入它们)
我不认为添加额外的依赖项是这个问题的正确答案。我不认为添加额外的依赖项是这个问题的正确答案。xmlrunner.XMLTestRunner(output=xml_dir,verbosity=1)。run(SUITE)是我要找的xmlrunner。XMLTestRunner(output=xml_dir,verbosity=1)。run(SUITE)是我要找的
def suite():
""" returns all the testcases in this module """
return TestLoader().loadTestsFromTestCase(AbsoluteMoveTestSuite)
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)