unittest详解(七) 自动生成测试报告

unittest详解(七) 自动生成测试报告

用例执行完成后,执行结果默认是输出在屏幕上,其实我们可以把结果输出到一个文件中,形成测试报告。

unittest自带的测试报告是文本形式的,如下代码:

import unittest

if __name__ == "__main__":
    # 测试用例目录
    test_dir = r"D:\Git\Test_Framework\test_case"
    # 加载测试用例
    discover = unittest.defaultTestLoader.discover(test_dir, 'test*.py')
    # 测试报告路径
    report_path = r"D:\Git\Test_Framework\report\report.text"
    with open(report_path,"a") as report:
        runner = unittest.TextTestRunner(stream=report,verbosity=2)
        runner.run(discover)

生成的txt测试报告如下:

unittest详解(七) 自动生成测试报告

这种TXT文件测试报告不能直观地展示用例执行情况,引入第三方模块HTMLTestRunner,可以展示一份优美的html格式的测试报告。

下面我们就来介绍下HTMLTestRunner模块

HTMLTestRunner模块不能通过pip安装,必须先下载下来下载地址:http://tungwaiyip.info/software/HTMLTestRunner.html

unittest详解(七) 自动生成测试报告

直接右键另存为就行了,下载完成后放到python安装目录下的../Python36\Lib

因为HTMLTestRunner模块是基于Python2开发的,目前停止更新了,在Python3上运行会报错。为了使其支持Python3环境,需要对其中的部分内容进行修改:

第94行,将import StringIO修改成import io

第539行,将self.outputBuffer = StringIO.StringIO()修改成self.outputBuffer= io.StringIO()

第631行,将print >> sys.stderr, ‘\nTime Elapsed: %s‘ %(self.stopTime-self.startTime)修改成print(sys.stderr, ‘\nTimeElapsed: %s‘ % (self.stopTime-self.startTime))

第642行,将if not rmap.has_key(cls):修改成if notcls in rmap:

第766行,将uo = o.decode(‘latin-1‘)修改成uo = e

第775行,将ue = e.decode(‘latin-1‘)修改成ue = e

修改完成后保存。

现在我们就可以生成一份优美的测试报告了

代码:

import unittest
from HTMLTestRunner import HTMLTestRunner

if __name__ == "__main__":
    # 测试用例目录
    test_dir = r"D:\Git\Test_Framework\test_case"
    # 加载测试用例
    discover = unittest.defaultTestLoader.discover(test_dir, 'test*.py')
    # 测试报告路径
    report_path = r"D:\Git\Test_Framework\report\report.html"
    with open(report_path,"wb") as report:
        runner = HTMLTestRunner(stream = report,
                                title = "测试报告",
                                description = "系统登录测试用例执行")
        runner.run(discover)

unittest详解(七) 自动生成测试报告

 

转载于:https://www.cnblogs.com/eastonliu/p/9147075.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/101619.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • vb.net 教程 目录

    vb.net 教程 目录最新更新:在vb.net教程中更新了:vb.net教程5-19拓展:制作一个QQ大家来找茬和美女找茬辅助工具(2019-11-2516:29:53)vb.net教程5-20拓展论坛图片批量转换(2019-11-2516:19:31)vb.net教程5-21拓展如何给IE浏览器截图2019年11月25日16:58:13更进一步的vb.net学习,欢迎…

    2022年6月21日
    31
  • 10.Vuex组件中的mapState、mapGetters、mapMutations、mapActions等辅助函数

    10.Vuex组件中的mapState、mapGetters、mapMutations、mapActions等辅助函数State1.state中的数据,组件中如何获取this.$store.state.xxx属性2.mapState辅助函数1.引入mapStateimport{mapState}from’vuex’2.在computed计算属性中使用exportdefault{computed:mapState(…

    2022年5月25日
    73
  • ueditor使用注意事项

    ueditor使用注意事项

    2022年1月5日
    38
  • executequery方法返回值_mysql数据库有什么用

    executequery方法返回值_mysql数据库有什么用1if(AccessCon.ExecuteSql(sql=”select*fromsalesDatawhereindex='”+man.Index+”‘”)>0)2{3retValue=AccessCon.ExecuteSql(sql=”updatesalesDatasetsellingPrize='”+m…

    2025年10月29日
    2
  • 2022idea激活码【2021.10最新】

    (2022idea激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~3YVYA7ZZGQ-eyJsaWNlb…

    2022年3月30日
    97
  • Vue生命周期钩子(三)「建议收藏」

    Vue生命周期钩子(三)「建议收藏」Vue生命周期图Vue中共有11个生命周期函数,本文只说明8个生命周期钩子beforeCreate:实例刚在内存中被创建出来,此时,还没有初始化好data和methods属性created:实例已经在内存中创建完毕,此时 data 和 methods 已经创建完毕,此时还没有开始编译模板beforeMount:此时已经完成了模板的编译,但是还没有挂载到页面中…

    2022年6月13日
    29

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号