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)
上一篇下一篇

猜你喜欢

热点阅读