• <unittest学习8>unittest生成测试报告


    HTMLTestRunner

    HTMLTestRunner是Python标准库的unittest模块的扩展。它生成易于使用的HTML测试报告。

    下载地址:http://tungwaiyip.info/software/HTMLTestRunner.html

    下载完成后直接放到我们代码文件夹中,也可以放在其他地方,只要我们用的时候,可以直接调用就OK

    下载下来后可以先看下其中代码,能否找到一些简单的使用方法。(由于文件过大,这里我只呈现了部分我们需要用到的代码内容)

    复制代码
    # 输出到文件
    fp = file('my_report.html', 'wb')
    runner = HTMLTestRunner.HTMLTestRunner(
                    stream=fp,
                    title='My unit test',
                    description='This demonstrates the report output by HTMLTestRunner.'
                    )
    
        # 使用外部样式表。
        # 运行测试
    runner.run(my_test_suite)
    复制代码

    当然了我们只用这么多就可以生成报告了。

    小试牛刀

    1、在unittest中编写测试用例

    这里我还是直接调用前面写的通用代码了

    复制代码
    # coding:utf-8
    import unittest
    import requests
    
    class   Music(unittest.TestCase):
        def select(self,name):
            url = 'https://api.apiopen.top/searchMusic'
            data = {
                 "name":name
            }
            r = requests.post(url,data=data)
            b = r.json()['result'][0]['title']
            return b
    
        def test01(self):
            b = '断桥残雪'
            a = self.select(b)
            self.assertEqual(b,a)
            print('这个是用例一')
    
        def test02(self):
            a = '说好不哭'
            b = self.select(a)
            self.assertEqual(a,b)
            print('这个是用例二')
    
        def test03(self):
            a = '芒种'
            b = self.select(a)
            self.assertEqual(a,b)
            print('这个是用例三')
    
    if __name__ == '__main__':
            unittest.main()
    复制代码

    2、添加报告路径已经报告内容

    通过os模块进行找到当前文件夹,使报告生成当前文件夹中

    复制代码
      # 当前文件夹路径
        report_path = os.path.dirname(os.path.realpath(__file__))
        # 测试报告地址
        report_abspath = os.path.join(report_path, "result.html")
        fp = open(report_abspath, "wb")
         # 报告详情
        runner = HTMLTestRunner_cn.HTMLTestRunner(stream=fp,
                                               title=u'自动化测试报告,测试结果如下:',
                                               description=u'用例执行情况:')
    复制代码

    3、批量执行用例,导入测试报告内容中

    通过unittest中执行用例的方法,来批量执行用例

      # 实例化
        testunit  = unittest.TestSuite()  
        # 加载用例
        testunit.addTests(unittest.TestLoader().loadTestsFromTestCase(Music))  
        # 执行用例
        runner.run(testunit)

    4、当然是赶快执行查看报告内容啊

    通过用例,我们可以看到这里已经完全生成报告了。

    4、添加用例注释,增加报告完整性

    当然肯定有的小伙伴们会说,这里不能看到通过的用例都是哪些?这个地方可以解决吗? python这么强大,这个肯定可以解决啊。不过需要我们在用例中添加注释。这样的话就会生成了详细内容。全部代码如下(添加注释后)

    复制代码
    # coding:utf-8
    import unittest
    import requests
    import os
    from case import HTMLTestRunner_cn
    
    class   Music(unittest.TestCase):
        def select(self,name):
            url = 'https://api.apiopen.top/searchMusic'
            data = {
                 "name":name
            }
            r = requests.post(url,data=data)
            b = r.json()['result'][0]['title']
            return b
    
        def test01(self):
            '''
            歌名:断桥残雪
            '''
            b = '断桥残雪'
            a = self.select(b)
            self.assertEqual(b,a)
            print('这个是用例一')
    
        def test02(self):
            '''
            歌名:说好不哭
            '''
            a = '说好不哭'
            b = self.select(a)
            self.assertEqual(a,b)
            print('这个是用例二')
    
        def test03(self):
            '''
            歌名:芒种
            '''
            a = '芒种'
            b = self.select(a)
            self.assertEqual(a,b)
            print('这个是用例三')
    
    if __name__ == '__main__':
        # 当前文件夹路径
        report_path = os.path.dirname(os.path.realpath(__file__))
        # 测试报告地址
        report_abspath = os.path.join(report_path, "result.html")
        fp = open(report_abspath, "wb")
         # 报告详情
        runner = HTMLTestRunner_cn.HTMLTestRunner(stream=fp,
                                               title=u'自动化测试报告,测试结果如下:',
                                               description=u'用例执行情况:')
        # 实例化
        testunit  = unittest.TestSuite()
        # 加载用例
        testunit .addTests(unittest.TestLoader().loadTestsFromTestCase(Music))
        # 执行用例
        runner.run(testunit)
        # 关闭报告
        fp.close()
    复制代码

    怀着小小的激动去查看了生成的报告,果然没有令我失望,已经完成展现出来了~~

    声明 欢迎转载,但请保留文章原始出处:) 博客园:https://www.cnblogs.com/chenxiaomeng/ 如出现转载未声明 将追究法律责任~谢谢合作
  • 相关阅读:
    001 windows下如何生成公钥和私钥
    函数基础
    各种推导式
    MySQL误删数据
    kafka 学习笔记
    Nginx 功能
    Nginx 到底可以做什么
    Nginx 到底可以做什么
    Shell的18条常用命令整理
    超详细 Nginx 极简教程
  • 原文地址:https://www.cnblogs.com/chenxiaomeng/p/14833030.html
Copyright © 2020-2023  润新知