unittest测试框架

一、unittest框架4大核心组件(unittest是python自带的模块,无需安装下载)

1、TestCase:写测试用例

2、TestSuite:收集测试用例

3、TestRunner:执行测试用例

4、TesFixture:测试脚手架,前置条件,后置清理,根据实际情况选择使用


二、unittest工作流程

1、使用TestCase按照规则写测试用例,每一个函数为一个测试用例

2、创建一个测试套件TestSuite,收集测试用例到测试套件

3、TestRunner统一执行测试套件里面的测试用例

4、生成测试报告


三、测试用例编写

1、导入模块unittest

2、创建一个测试类,继承unittest.TestCase

  2.1测试用例必须写在测试类里面

3、测试用例必须以test开头

4、执行入口:unittest.main()    这种方法一般用于执行调试

5、测试用例包含哪些东西

  5.1、前置条件,如token、session

  • 函数级别:setUp:每个测试用例执行前都会执行

        tearDown:每个测试用例执行后都会执行

  • 类级别:setUpClass:测试类执行开始的时候执行,只执行一次

       tearDownClass:测试类执行完成后执行,只执行一次

  5.2、测试步骤,如ddt+接口请求+提取全局变量

  5.3、测试断言,利用unittest框架自带的断言

  5.4、日志收集:还原整个测试过程

  5.4、后置清理:是否要清理掉测试数据,删除测试,关闭各种文件的连接,关闭数据库连接

 6、用例执行顺序

  6.1、按照测试用例名称的Ascii码大小来执行

    char():Ascii ----- 字符

    ord():字符 ------- Ascii

  6.2、执行顺序

    类级别前置---->函数级别前置----->测试用例----->函数级别后置----->类级别前置


四、测试用例收集与执行

通常会另起一个页面对用例进行收集和执行

1、创建测试套件suite

1.1、以测试用例为维度(了解,一般不用)

import unittest
from interface_code.unittest_code.test_case import TestDemo

# 创建测试套件
suite = unittest.TestSuite()

# 添加一个测试用例到测试套件
# suite.addTest(TestDemo("test_01"))  # 添加TestDemo这个测试类下面名为test_01的测试用例

# 添加多个测试用例到测试套件
case_list = [TestDemo("test_01"),TestDemo("test_02")]
suite.addTests(case_list)

1.2、以测试类为维度(了解)

# 创建测试套件
suite = unittest.TestSuite()

# 添加整个测试类到测试套件(一般不用)
suite.addTest(unittest.makeSuite(TestDemo))

# 添加整个测试类到测试套件(用作了解)
suite = unittest.TestLoader().loadTestsFromTestCase(TestDemo)

1.3、以测试文件为维度(常用,要记)

import unittest
import os

# 指定收集某个目录下的某个测试用例文件的测试用例

dir_path = os.path.dirname(__file__)  # 获取当前文件所有的父目录路径
# 获取到的路径是  E:/PycharmProjects/Auto_Project/interface_code/unittest_code

# discover有两个参数
# satrt_dir:测试用例目录
# pattern = "test*.py" ,如果测试用例以test开头则不需要填该参数

suite = unittest.defaultTestLoader.discover(dir_path)

2、用例执行

# 运行测试用例
runner = unittest.TextTestRunner()  # 实例化执行器
runner.run(suite)

 


五、测试报告

1、TextTestRunner()  自带的测试报告,不好看,无法识别,也没有执行过程(一般不用)

2、HTMLTestRunner:不好看(一般不用)

3、BeautifulReReport:第三方库,还可以,推荐使用

import unittest
import os
from BeautifulReport import BeautifulReport

dir_path = os.path.dirname(__file__)  # 获取当前文件所有的父目录路径
suite = unittest.defaultTestLoader.discover(dir_path)  # 指定收集某个目录下的某个测试用例文件的测试用例

br = BeautifulReport(suite)
'''
report方法的参数设置:
description: 测试报告描述
filename: 测试报告名称
report_dir: 测试报告保存的路径,不填时默认为当前文件所有目录
'''
br.report("这是测试报告描述","这是测试报告名称")  # 执行用例并生成html格式的测试报告 

4、unittestreport:第三方库,推荐使用

import unittest
import os
from unittestreport import TestRunner

dir_path = os.path.dirname(__file__)  # 获取当前文件所有的父目录路径
suite = unittest.defaultTestLoader.discover(dir_path)  # 指定收集某个目录下的某个测试用例文件的测试用例

# 用unittestreport收集测试报告
runner = TestRunner(
             suite=suite,
             filename="report.html",  # 生成的文件名称
             report_dir=".",
             title='测试报告的名称',
             tester='测试员',
             desc="XX项目测试生成的报告",
             templates=1  # 模板,可替换成模板2或3
)
runner.run()  # 执行用例并生成html格式的测试报告

 

posted @ 2021-07-24 00:57  南啾  阅读(490)  评论(0编辑  收藏  举报