Мне хотелось бы, чтобы отдельный класс запускал все мои тесты, а затем вызывал этот класс из main, чтобы отобразить результаты. К сожалению, я получаю сообщение об ошибке:Ошибка Unbound с использованием unittest модуля python
Traceback (most recent call last):
File "/home/dhatt/workspace/pyqt_DALA_ServiceTracker/src/Main.py", line 21, in <module>
allsuite = unittest.TestLoader.loadTestsFromModule(TestAllSuite)
TypeError: unbound method loadTestsFromModule() must be called with TestLoader instance as first argument (got type instance instead)
Как изменить код, чтобы я мог выполнять свои тесты?
Я использую python 2.6.5.
Если вы обнаружите, что сама моя структура тестирования также создает проблему (где основной вызов вызывает основной класс тестирования, который затем вызывает все мои другие классы тестирования), дайте мне знать. Я открыт для предложений к лучшему макету моего кода тестирования (примеры из интернета только дать вам самые основы при использовании UnitTest)
Вот мой код из TestAllClass (он звонит другие тестовые классы)
import unittest
from TestSettings import TestSettings
from TestConnectDB import TestConnectDB
class TestAllSuite(unittest.TestCase):
def testsuite(self):
suite_settings = TestSettings.suite()
suite_connectDB = TestConnectDB.suite()
alltests = unittest.TestSuite([suite_settings, suite_connectDB])
return alltests
и здесь является частью моей основной, который вызывает TestAllClass
if __name__ == '__main__':
allsuite = unittest.TestLoader.loadTestsFromModule(TestAllSuite)
unittest.TextTestRunner(verbosity=2).run(allsuite)
Вот пример одного из моих тестовых классов (если это помогает):
from Settings import Settings
import unittest
class TestSettings(unittest.TestCase):
def suite(self):
suite = unittest.TestSuite()
tests = ['test_confirm_ip', 'test_valid_conn','test_correct_location']
return unittest.TestSuite(map(suite, tests))
def setUp(self):
self._test_settings = Settings('/home/dhatt/ServiceTrackerSettings.ini')
self.ip_add, self.conn, self.digby = self._test_settings._get_config_variables()
def tearDown(self):
self._test_settings = None
self.ip_add = None
self.conn = None
self.digby = None
def test_confirm_ip(self):
self.assertEqual((str(self.ip_add)), ('142.176.195.250'))
def test _confirm_conn(self):
self.assertEqual((str(self.conn)), ('conn1'))
def test_confirm_location(self):
self.assertEqual((self.digby), (True))
ОК. Спасибо за разъяснения. И спасибо за сценарий, я никогда не думал о том, чтобы выглядеть так. Я посмотрю, как это происходит позже, когда добавлено больше тестов, но пока это хорошо. –
Кроме того, если бы у меня была версия python версии 2.7, я мог бы просто сделать это. http://docs.python.org/library/unittest.html#unittest.TestLoader.discover Pity ... –
@ Danny: Спасибо, что указали это. Я не знал о «TestLoader.discover». – unutbu