TestSuite с testuites и testcases

Мне нужно сделать большой python suitecase, состоящий из других чемоданов и чеков, которые я уже сделал для выполнения вместе.

Как мне это сделать?

Например, здесь есть suitecase (suiteFilter.py), который я хочу добавить:

import testFilter1 import testFilter2 import unittest import sys def suite(): return unittest.TestSuite((\ unittest.makeSuite(testFilter1.TestFilter1), unittest.makeSuite(testFilter2.TestFilter2), )) if __name__ == "__main__": result = unittest.TextTestRunner(verbosity=2).run(suite()) sys.exit(not result.wasSuccessful()) 

И тестовая структура (Invoice.py):

 from selenium import selenium import unittest, time, re from setup_tests import filename, fileForNrTest, username, password, server_url fileW=open(filename,'a') class TestInvoice(unittest.TestCase): def setUp(self): self.verificationErrors = [] self.selenium = selenium("localhost", 4444, "*firefox", server_url) self.selenium.start() def test_invoice(self): sel = self.selenium [...] def tearDown(self): self.selenium.stop() self.assertEqual([], self.verificationErrors) if __name__ == "__main__": unittest.main() 

Спасибо!

Вы могли бы предоставить дополнительную информацию, такую ​​как структура вашей программы / тестовых примеров и наборов. Способ, которым я это делаю, определяет набор () для каждого модуля. Поэтому я говорю для модуля UserServiceTest:

 def suite(): """ Gather all the tests from this module in a test suite. """ test_suite = unittest.TestSuite() test_suite.addTest(unittest.makeSuite(UserServiceTest)) return test_suite if __name__ == "__main__": #So you can run tests from this module individually. unittest.main() 

Затем у меня есть основной тест для каждого пакета:

 def suite(): """ Gather all the tests from this package in a test suite. """ test_suite = unittest.TestSuite() test_suite.addTest(file_tests_main.suite()) test_suite.addTest(userservice_test.suite()) return test_suite if __name__ == "__main__": #So you can run tests from this package individually. TEST_RUNNER = unittest.TextTestRunner() TEST_SUITE = suite() TEST_RUNNER.run(TEST_SUITE) 

Вы можете сделать это recursevly до корня вашего проекта. Таким образом, основной тест из пакета A соберет весь модуль в пакете A + основной тест из подпакетов пакета A и так далее. Я предполагал, что вы используете unittest так как вы не unittest никаких дополнительных данных, но я думаю, что эта структура может быть применена и к другим платформам тестирования python.


Редактирование: Ну, я не совсем уверен, что полностью понимаю вашу проблему, но из того, что я понимаю, вы хотите добавить как набор, определенный в SuiteFilter.py, так и тестовый файл, определенный в Invoice.py в том же пакете? Если да, то почему бы просто не сделать в mainTest.py например:

 import unittest import suiteFilter import Invoice def suite() test_suite = unittest.TestSuite() test_suite.addTest(suiteFilter.suite()) test_suite.addTest(unittest.makeSuite(Invoice)) if __name__ == "__main__": result = unittest.TextTestRunner(verbosity=2).run(suite()) sys.exit(not result.wasSuccessful()) - import unittest import suiteFilter import Invoice def suite() test_suite = unittest.TestSuite() test_suite.addTest(suiteFilter.suite()) test_suite.addTest(unittest.makeSuite(Invoice)) if __name__ == "__main__": result = unittest.TextTestRunner(verbosity=2).run(suite()) sys.exit(not result.wasSuccessful()) 

Вы можете добавлять тесты и сюиты все равно к test_suite.