pytestreport导出测试报告html文本
2021-06-22 本文已影响0人
深吸一口气
本文基于pytestreport 0.2.1
PytestReport 一个由 HTMLTestRunner 项目为灵感,并基于 HTMLTestRunner 进行二次开发的一个项目。主要在 API 调用、报告样式、扩展性等方面进行了增强。
使用示例
import unittest
from pytestreport import TestRunner
class MyTest(unittest.TestCase):
def testTrue(self):
self.assertTrue(True)
if __name__ == '__main__':
suite = unittest.TestSuite()
suite.addTests(unittest.TestLoader().loadTestsFromTestCase(MyTest))
with open(r'/path/to/report.html', 'wb') as fp:
runner = TestRunner(fp, title='测试标题', description='测试描述', verbosity=2)
runner.run(suite)
主要修改部分
pytestreport.TestRunner.run
方法
def run(self, test):
"""Run the given test case or test suite."""
result = _TestResult(self.verbosity)
test(result)
self.duration = datetime.datetime.now() - self.start_time
data = self.generate_data(result)
html = self.generate_report(data)
print(f'\nTime Elapsed: {self.duration}', file=sys.stderr)
result.pytestreport_data = data
result.pytestreport_html = html
return result
将这个方法的返回值修改为return html
,直接返回测试报告的html
文本
pytestreport.TestRunner.generate_report
方法
def generate_report(self, data):
html_template = self.get_html_template()
output = html_template.render(**data)
self.stream.write(output.encode('utf-8'))
return output
将这个方法的self.stream.write(output.encode('utf-8'))
注释,不将测试报告写入到文件
修改后使用方法
import unittest
from pytestreport import TestRunner
class MyTest(unittest.TestCase):
def testTrue(self):
self.assertTrue(True)
if __name__ == '__main__':
suite = unittest.TestSuite()
suite.addTests(unittest.TestLoader().loadTestsFromTestCase(MyTest))
runner = TestRunner(title='测试标题', description='测试描述', verbosity=2)
html = runner.run(suite)