Попытка реализовать python TestSuite
У меня есть два тестовых примера (два разных файла), которые я хочу объединить в тестовом комплекте. Я могу заставить тесты запускать, просто запустив python "обычно", но когда я выбираю запустить python- unit test, он говорит, что выполняется 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()
Что мне нужно сделать, чтобы правильно выполнить эту работу?
Ответы
Ответ 1
вы хотите использовать тест. Поэтому вам не нужно называть unittest.main().
Использование тестов должно быть таким.
#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)
Ответ 2
Весь код для создания загрузчика и набора не нужен. Вы должны написать свои тесты, чтобы их можно было запустить с помощью тестового обнаружения, используя ваш любимый тестовый бегун. Это означает, что вы называете ваши методы стандартным способом, помещая их в импортируемое место (или передавая папку, содержащую их в бегун), и наследуя от unittest.TestCase
. После того, как вы это сделали, вы можете использовать python -m unittest discover
у самого простого или лучшего стороннего участника, чтобы обнаружить и затем запустить ваши тесты.
Ответ 3
Если вы пытаетесь вручную собрать TestCase
s, это полезно: unittest.loader.findTestCases()
:
# Given a module, M, with tests:
mySuite = unittest.loader.findTestCases(M)
runner = unittest.TextTestRunner()
runner.run(mySuit)
Ответ 4
Я предполагаю, что вы ссылаетесь на запуск python- unit test против модуля, который объединяет два теста. Он будет работать, если вы создадите тестовый пример для этого модуля, т.е. подклассом unittest.TestCase
и имеющим простой тест, который начинается со слова "тест".
например.
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()