zoukankan      html  css  js  c++  java
  • unittest详解(四) 自动化测试用例实例

     uniittest不仅适用于单元测试,还可以使用unittest测试框架设计和开发自动化测试用例,并自动生成测试报告。

    那么如何自动生成测试报告呢,需要使用到HTMLTestRunner模块,这个模块需要自行安装,下载HTMLTestRunner.py文件放置python安装目录Lib目录下即可。

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

     

    接下来介绍一下unittest框架编写自动化测试用例实例:

    测试用例目录如下:

     

    case_1目录中的py文件为单元测试用例,report1目录下保存执行测试用例的结果报告。

    task_all.py代码如下:

    #coding=utf-8
    import unittest
    import os,time
    import HTMLTestRunner
    from Atest.case_1 import task1,task2
    
    #HTMLTestRunner模块生成测试报告
    
    #用例路径
    case_path=os.path.join(os.getcwd(),'case_1')
    
    #报告存放路径
    report_path=os.path.join(os.getcwd(),'report_1')
    
    #报告文件
    now=time.strftime('%Y%m%d_%H:%M',time.localtime(time.time()))
    filename=report_path+now+"_result.html"
    
    fp=file(filename,'wb')
    
    #方法一:使用defaultTestLoader加载case_1目录下的所有测试用例,优点是加载方便,缺点是不能保证执行顺序,并生成测试报告。
    def all_case_a():
        discover=unittest.defaultTestLoader.discover(case_path,'task*.py',top_level_dir=None)
        return discover
    
    if __name__=='__main__':
        # runner=unittest.TextTestRunner()
        # runner.run(all_case_a())
        runner=HTMLTestRunner.HTMLTestRunner(stream=fp,title=u'Atest测试用例执行',description=u'测试结果:')
        runner.run(all_case_a())
        fp.close()
    
    #方法二:使用unittest.TestSuite加载测试用例,可自定义顺序进行执行,并生成测试报告。
    all_case_b=unittest.TestSuite()
    list=[task1.task_a,task2.task_b]
    for i in list:
        all_case_b.addTest(unittest.makeSuite(i))
    if __name__=='__main__':
        runner=HTMLTestRunner.HTMLTestRunner(stream=fp,title=u'Atest测试用例执行',description=u'测试结果:')
        runner.run(all_case_b)
        fp.close()

     HtmlTestRunner无法生成报告的几种情况:

    1.若不是使用with做文件的上下文管理,记得要fp.close() 关闭打开的文件,才可以保存。

      fp = open(filename, 'wb') fp.close()

    2.脚本中文字符要转码,如:u'中文'。小u 是避免中文引起的乱码问题.

    3.同一脚本文件中,鼠标光标放置test函数右击,选择“unittest test”执行则无法生成报告,因为Pycharm 自带测试框架,需要点击Edit Configurations→Python tests→选中要删除的项目,这样就不会自动执行unittest。然后光标放置 if __name__ == "__main__": 处,执行脚本,报告文件生成成功。

  • 相关阅读:
    GRYZ20211029模拟赛解题报告
    LG 题解 CF1545B AquaMoon and Chess
    GRYZ10.27模拟赛解题报告
    开博客通告
    民科吧编程赛 题解
    民科吧编程赛 试题
    四则运算开平方——对民科吧编程大赛题目的再探究
    The First
    机械手相机9点坐标标定-基于C#+EmguCV
    Emgucv图像处理工具
  • 原文地址:https://www.cnblogs.com/xiatian09/p/9830621.html
Copyright © 2011-2022 走看看