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:\python3\Lib,将文件放到目录下,在使用的测试文件里,导入就能使用。

 

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的测试报告

 

posted @ 2018-06-03 23:04  懒懒的妞  阅读(232)  评论(0编辑  收藏  举报