zoukankan      html  css  js  c++  java
  • unittest---unittest生成测试报告

      我们做测试的人员们都知道测试完成后,肯定是会生成一个测试报告,那么当我们做自动化的时候,这个自动化报告也可以自动生成吗?python当然可以了!

    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()

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

     这一篇安静主要介绍了unittest如何生成测试报告,如果哪里有不懂的或者不清楚的可以下方留言,看到后第一时间回复~~~共同进步,共同学习

  • 相关阅读:
    解释机器学习模型的一些方法(一)——数据可视化
    机器学习模型解释工具-Lime
    Hive SQL 语法学习与实践
    LeetCode 198. 打家劫舍(House Robber)LeetCode 213. 打家劫舍 II(House Robber II)
    LeetCode 148. 排序链表(Sort List)
    LeetCode 18. 四数之和(4Sum)
    LeetCode 12. 整数转罗马数字(Integer to Roman)
    LeetCode 31. 下一个排列(Next Permutation)
    LeetCode 168. Excel表列名称(Excel Sheet Column Title)
    论FPGA建模,与面向对象编程的相似性
  • 原文地址:https://www.cnblogs.com/qican/p/11943337.html
Copyright © 2011-2022 走看看