我想在测试套件中一起运行两个测试用例(两个不同的文件)。我可以通过“正常”运行python来运行测试但是当我选择运行python-unit测试时它会说0个测试运行。现在我只想尝试至少进行一次测试才能正确运行。
import usertest
import configtest # first test
import unittest # second test
testSuite = unittest.TestSuite()
testResult = unittest.TestResult()
confTest = configtest.ConfigTestCase()
testSuite.addTest(configtest.suite())
test = testSuite.run(testResult)
print testResult.testsRun # prints 1 if run "normally"
以下是我的测试用例设置示例
class ConfigTestCase(unittest.TestCase):
def setUp(self):
##set up code
def runTest(self):
#runs test
def suite():
"""
Gather all the tests from this module in a test suite.
"""
test_suite = unittest.TestSuite()
test_suite.addTest(unittest.makeSuite(ConfigTestCase))
return test_suite
if __name__ == "__main__":
#So you can run tests from this module individually.
unittest.main()
我需要做些什么才能正常工作?
答案 0 :(得分:44)
你想使用一件套装。所以你不需要调用unittest.main()。 使用testuit应该是这样的:
#import usertest
#import configtest # first test
import unittest # second test
class ConfigTestCase(unittest.TestCase):
def setUp(self):
print 'stp'
##set up code
def runTest(self):
#runs test
print 'stp'
def suite():
"""
Gather all the tests from this module in a test suite.
"""
test_suite = unittest.TestSuite()
test_suite.addTest(unittest.makeSuite(ConfigTestCase))
return test_suite
mySuit=suite()
runner=unittest.TextTestRunner()
runner.run(mySuit)
答案 1 :(得分:8)
创建加载器和套件的所有代码都是不必要的。您应该编写测试,以便通过使用您最喜欢的测试运行器的测试发现来运行它们。这只是意味着以标准方式命名您的方法,将它们放在可导入的位置(或将包含它们的文件夹传递给运行程序),并继承自unittest.TestCase
。完成后,您可以使用最简单或更好的第三方运动员python -m unittest discover
来发现并运行您的测试。
答案 2 :(得分:1)
我假设你指的是对整合两个测试的模块运行python-unit测试。如果您为该模块创建测试用例,它将起作用。子类化unittest.TestCase
并进行一个以“test”开头的简单测试。
e.g。
class testall(unittest.TestCase):
def test_all(self):
testSuite = unittest.TestSuite()
testResult = unittest.TestResult()
confTest = configtest.ConfigTestCase()
testSuite.addTest(configtest.suite())
test = testSuite.run(testResult)
print testResult.testsRun # prints 1 if run "normally"
if __name__ == "__main__":
unittest.main()
答案 3 :(得分:1)
如果您尝试手动收集TestCase
,这很有用:unittest.loader.findTestCases()
:
# Given a module, M, with tests:
mySuite = unittest.loader.findTestCases(M)
runner = unittest.TextTestRunner()
runner.run(mySuit)