• 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如何生成测试报告,如果哪里有不懂的或者不清楚的可以下方留言,看到后第一时间回复~~~共同进步,共同学习

  • 相关阅读:
    Ubuntu12.04.1安装JDK 分类: ubuntu 20130506 11:45 1491人阅读 评论(0) 收藏
    Ubuntu 设置静态IP上网 分类: ubuntu 20130511 11:18 693人阅读 评论(0) 收藏
    linux 找回root用户密码 分类: ubuntu 20130426 15:57 199人阅读 评论(0) 收藏
    #小练习 类属性 分类: python 小练习 20130428 14:46 190人阅读 评论(0) 收藏
    VirtualBox虚拟机网络设置(四种方式) 分类: 测试 虚拟机 20130511 15:40 275人阅读 评论(0) 收藏
    异常处理 分类: python 20130502 11:13 172人阅读 评论(0) 收藏
    bash: ./java: cannot execute binary file 问题 分类: ubuntu 20130506 18:05 788人阅读 评论(0) 收藏
    在ubuntu上关闭tomcat的自启动 分类: ubuntu 20130507 09:45 302人阅读 评论(0) 收藏
    linux设置python环境变量 分类: python 20130513 10:37 1253人阅读 评论(0) 收藏
    #小练习 冒泡排序 分类: python 小练习 20130503 14:36 200人阅读 评论(0) 收藏
  • 原文地址:https://www.cnblogs.com/qican/p/11943337.html
Copyright © 2020-2023  润新知