美文网首页python学习
Python学习打call第七十四天:unittest生成测试报

Python学习打call第七十四天:unittest生成测试报

作者: 暖A暖 | 来源:发表于2019-04-29 10:26 被阅读10次

    1.把测试案例的结果写入文件

    • 在测试套件中,修改用于执行测试用例集的runner,增加一个上下文管理器with语句,例如:with open('文件名', 'w+') as f,其中f表示一个流对象,然后把流对象加入TextTestRunner类的参数stream中,例如:runner = TextTestRunner(stream=f),然后运行,项目中就能生成一个文件,文件中的内容就是测试用例打印出的内容;
    from test1 import MyTestCase
    from unittest import TestSuite, TextTestRunner
    
    suite = TestSuite()
    # 在测试用例集中添加测试用例
    suite.addTest(MyTestCase('test_print1'))
    suite.addTest(MyTestCase('test_print2'))
    suite.addTest(MyTestCase('test_print3'))
    
    if __name__ == '__main__':
        # 创建测试runner,执行测试用例集
        with open('html_result1', 'w+') as f:
            runner = TextTestRunner(stream=f, verbosity=2)
            runner.run(suite)
    

    2.使用html-testRunner模块将测试结果写入HTML页面

    • HtmlTest runner是一个单元测试运行器,可以将测试结果保存在Html文件中。首先需要安装模块:pip install html-testRunner,安装后调用时显示为HtmlTestRunner;

    • 使用时需要导入HtmlTestRunner中的HTMLTestRunner类;

    • 再将测试中的TextTestRunner类替换成HTMLTestRunner类,这里需要注意一下HTMLTestRunner自带的参数,output表示结果保存到哪里、verbosity显示用例打印内容、stream表示标准输出、report_name文件名、report_title标题、descriptions描述等。然后直接运行,就会在html中生成一个html文件,如果再次运行会生成一个新的html文件;

    from test import MyTestCase
    from unittest import TestSuite, TextTestRunner
    import HtmlTestRunner
    
    suite = TestSuite()
    # 在测试用例集中添加测试用例
    suite.addTest(MyTestCase('test_print1'))
    suite.addTest(MyTestCase('test_print2'))
    suite.addTest(MyTestCase('test_print3'))
    
    if __name__ == '__main__':
        # 创建测试runner,执行测试用例集
        # runner = TextTestRunner()
        with open('html_result', 'w+') as f:
            runner = HtmlTestRunner.HTMLTestRunner(output='./', stream=f, report_title='测试报告', descriptions='测试报告详情')
            runner.run(suite)
    

    我们来看一下在浏览器中HTML页面效果,这个测试报告都有说明的,比如说测试用例的Total总数是3、Pass通过的测试用例数量是2、Skip跳过的测试用例数量是1

    3.unittest实现自动发现

    我们可以使用unittest.defaultTestLoader类中的discover()方法实现自动根据测试目录start_dir匹配查找测试用例文件,并将查找到的测试用例组装到测试套件,然后通过run()方法执行discover

    from unittest import TextTestRunner, defaultTestLoader
    
    start_dir = './'
    discover = defaultTestLoader.discover(start_dir=start_dir, pattern=r'test*.py')
    if __name__ == '__main__':
        # 创建测试runner,执行测试用例集
        with open('html_result1', 'w+') as f:
            runner = TextTestRunner(stream=f, verbosity=2)
            runner.run(discover)
    

    参考:https://www.9xkd.com/user/plan-view.html?id=1914210302

    相关文章

      网友评论

        本文标题:Python学习打call第七十四天:unittest生成测试报

        本文链接:https://www.haomeiwen.com/subject/zmmjnqtx.html