У меня есть набор для тестирования дыма. У меня есть все мои script, хранящиеся в разных классах, но когда я пытаюсь запустить тестовый пакет, я не могу заставить его работать, если он находится в классе. Код ниже: (класс для вызова тестов)
from alltests import SmokeTests
class CallTests(SmokeTests):
def integration(self):
self.suite()
if __name__ == '__main__':
run = CallTests()
run.integration()
И набор тестов:
class SmokeTests():
def suite(self): #Function stores all the modules to be tested
modules_to_test = ('external_sanity', 'internal_sanity')
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')
Выдает ошибку: Ошибка атрибута: объект 'module' не имеет атрибута 'suite'
Итак, я могу видеть, как назвать стандартную функцию, но мне сложно вызвать вызов в пакете. В одном из тестов набор настроен так:
class InternalSanityTestSuite(unittest.TestSuite):
# Tests to be tested by test suite
def makeInternalSanityTestSuite():
suite = unittest.TestSuite()
suite.addTest(TestInternalSanity("BasicInternalSanity"))
suite.addTest(TestInternalSanity("VerifyInternalSanityTestFail"))
return suite
def suite():
return unittest.makeSuite(TestInternalSanity)
Если у меня есть someSuite() внутри класса SmokeTests, python не может найти набор атрибутов, но если я удалю класс, он будет работать. Я запускаю это как script и вызываю переменные в тесте. Я не хочу запускать тесты с помощью os.system('python tests.py'). Я надеялся вызвать тесты через класс, который у меня есть как любая другая функция
Может ли кто-нибудь помочь мне с этим запуском?
Спасибо за любую помощь заранее.
Я знаю, что это не ответ, но я бы предложил использовать библиотеку, которая может использовать обнаружение тестов, например нос или unittest, из Python 2.7 +.
Возможность сделать
nosetests module.submodule
или
nosetests module.submodule:TestCase.test_method
бесценен:)
Это не может работать:
class SmokeTests():
def suite(self): #Function stores all the modules to be tested
modules_to_test = ('external_sanity', 'internal_sanity')
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')
Выдает ошибку: Ошибка атрибута: объект 'module' не имеет атрибута 'suite'.
В вашем пакете используется значение метода SmokeTests().suite()
. Обратите внимание на переменную с именем suite
, так как у вас нет такой переменной.
Легче использовать простую функцию для вашего пакета.
def someSuite():
modules_to_test
...
return alltests
if __name__ == "__main__":
unittest.main( defaultTest= someSuite() )
Что-то вроде этого будет ближе к правилу.