zoukankan      html  css  js  c++  java
  • python学习笔记-day11-01-【 单元测试框架-unittest】

    今天来说说单元测试框架 - unittest。

    一、unittest的使用

    def calc(a,b):
        return round(a/b)  #保留一个小数
    
    
    class TestCalc(unittest.TestCase):#继承unittest
        def setUp(self):
            print('啥时候运行的, setUp')
            #每个用例运行之前运行的
    
        def tearDown(self):
            print('啥时候运行的,tearDown')
            #每个用例运行之后运行的
    
        @classmethod
        def setUpClass(cls):
            print('啥时候运行的,setUpClass')
            # 所有的用例执行之前会执行
    
        @classmethod
        def tearDownClass(cls):
            print('啥时候运行的,tearDownClass')
            # 所有的用例执行之后会执行
    
    
        def test_calc(self):  #要以test开头,否则不会执行
            '''测试1'''  #用例描述,使用HTMLRunner报告时,会作为用例描述,这个是静态,如果要使用动态的,这个方式不行
            # # res = calc(1,2)
            # self.assertEqual(0.5, res, '计算不正确')
            print('test_calc')
            self.assertEqual(1, 1)
    
        def test_calc_zero(self):
            '''测试2'''
            # res = calc(1, 0)
            # self.assertIsNone(res, 'zero')
            print('test_calc_zero')
            self.assertEqual(1, 2)
    
        def testa(self):
            print('testa')
            self.assertEqual(1,1)
        def testb(self):
            print('testa')
            self.assertEqual(1,2)

    二、执行所有测试用例,unittest.main

    1、执行所有测试用例

    # unittest.main()  #会运行当前python文件里面的所有测试用例,但不会产生测试报告
    #会将测试用例里的print打印出来,用于调试


    2、用例的执行顺序

     如一中在每个测试用例,使用print()进行调用,使用uniitest.main进行调试,必现用例执行的顺序是按用例名称的标题的字母进行排序执行的。

    三、执行能打印出报告

    1、下载HTMLTestRunner, 放到pyhon安装目录的lib目录下

    如我的本地python3安装目录为:C:python3Lib,将文件放到目录下,在使用的测试文件里,导入就能使用。

    2、使用HTMLTestRunner生成测试html测试报告

    #生成报告
    #测试套件,用例集
    #存放测试用例的
    #1、先把所有的测试用例都存放到用例集
    #2、运行这些测试用例
    #3、产生测试报告
    
    #运行顺序,以字母的顺序开头运行的
    
    suite = unittest.TestSuite()  #测试集合
    suite.addTest(unittest.makeSuite(TestCalc)) #用例集合变成测试集合,把赐才写的用例加进来
    f = open('test.html', 'wb') #wb打开是全是二进制的,中文不会报错,没有字符解码的问题
    runner = HTMLTestRunner.HTMLTestRunner(f, title='双鱼座有例标题',description='用例描述')
    runner.run(suite)  #运行用例

    如果在pycharm里面,不要右键->执行,从菜单Run->Run...,选择文件,否则pycharm是不会生成报告的。

    四、生成报告不使用HTMLTestRunner, 太简单了,使用好看的测试报告模块

    BeautifulReport,这个需要另外安装,不能使用pip安装,并没有在托管仓库里,下载源码文件,安装。

    import unittest
    import HTMLTestRunner
    from BeautifulReport import  BeautifulReport as bf
    #导入包
    
    #使用BeautifulReport生成报告 suite1
    = unittest.TestSuite()#测试集合 suite1.addTest(unittest.makeSuite(TestCalc)) report = bf(suite1) report.report(description='描述必须写',filename='test') #在本前目录下生成test.html的测试报告
    总是想多努力一点的人
  • 相关阅读:
    DDD(Domain Driven Design) 架构设计
    兴哥:美团下一个十年,要让新一批管理者成长起来
    Java设计模式-Builder构造者模式
    社会需要转型变革,自己更需要转型变革-屡败屡战
    Guava 源码分析之Cache的实现原理
    缓存算法(FIFO 、LRU、LFU三种算法的区别)
    Guava---缓存之LRU算法
    Boost.Asio 网络编程([译]Boost.Asio基本原理)
    浅谈 Boost.Asio 的多线程模型
    boost.asio系列——io_service
  • 原文地址:https://www.cnblogs.com/shmily2018/p/9131178.html
Copyright © 2011-2022 走看看