Я использую в моей реализации проекта испытательного генератора от hereСоздание результатов HTML из тестов генерируются динамически
Этого просто генерирует тестовые случаи на базе данных (объем данных), что я предоставить в test_function.
Я пытаюсь создать вывод HTML от этого в файл «report.html т.е.»
import unittest
class DynamicClassBase(unittest.TestCase):
longMessage = True
def make_test_function(description, a, b):
def test(self):
self.assertEqual(a, b, description)
return test
def main():
testsmap = {
'foo': [1, 1],
'bar': [1, 2],
'baz': [5, 5]}
for name, params in testsmap.iteritems():
test_func = make_test_function(name, params[0], params[1])
klassname = 'Test_{0}'.format(name)
globals()[klassname] = type(klassname,
(DynamicClassBase,),
{'test_gen_{0}'.format(name): test_func})
unittest.main()
if __name__ == '__main__':
main()
Я нашел хороший способ произвести его с помощью HTMLTestRunner, но я имел проблемы, объединяющие эти два решения. Основная проблема заключается в том, что HTMLTestRunner получает пакет suite = unittest.TestLoader().loadTestsFromTestCase(classname)
в качестве параметра
Образец HTMLTestRunner, что я использую:
import HTMLTestRunner
import unittest
def main():
class htmlreportsdemo(unittest.TestCase):
def test_pass(self):
pass
def test_fail(self):
self.fail()
suite = unittest.TestLoader().loadTestsFromTestCase(htmlreportsdemo)
unittest.TextTestRunner(verbosity=2)
output = open("results.html", "w")
runner = HTMLTestRunner.HTMLTestRunner(stream=output, title='demo title',
description='demo desc')
runner.run(suite)
if __name__ == '__main__':
main()
Спасибо, это очень близко к тому, что я ищу. Единственное, что нужно исправить, это то, что 'setattr' производит все сгенерированные тесты, исходящие из' (__main __. DynamicClassBase) ', и в моем первом примере каждый тест исходит из собственного« класса »:' (__main __. Test_foo) 'и т. Д. В текущем решении если один из тестов потерпел неудачу, его сообщение как целого класса не удалось, а не как хотелось: отдельный тестовый пример. Но в любом случае, спасибо, это был хороший намек на стартер! – modzello86