day13:Python单元测试(TestCase,TestSuit,TestLoader,TestReport)
进阶一:单元测试框架
一、单元测试的定义
1.什么是单元测试
还记不记得我们软件测试学习的时候,按照定义:单元测试就是对单个类或者单个函数进行测试,一般是开发做的,按照阶段来分,一般就是单元测试,集成测试,系统测试,验收测试。
2.为什么要做单元测试?
(1)单元测试之后,才是集成测试,单个单个的功能模块测试通过之后,才能把单个功能模块集成起来做集成测试,为了从底层发现bug,减少合成后出现的问题。
(2)越早发现bug越好,这样可以早点发现问题,不忽问题累计到后面,如果做错了就要推倒生来,对于时间和经费来说,是非常浪费的!
对于我们测试来说,我们就单元测试是为执行测试用例!
输入测试数据—>输出测试结果
二、unittest框架以及原理介绍
1.unittest框架最核心的四个概念
(1)TestCase:一个testcase的实例就是一个测试用例
(2)TestSuit:多个测试用例集合在一起。TestLoder:是用来加载TestCase到TestSuite中的
(3)TextTestRunner:是用来执行测试用例的
(4)Fixture:测试用例环境的搭建和销毁。测试前准备环境的搭建(setUp),执行测试代码(run)以及测试后环境的还原(tearDown)
我们会一个一个的来讲解,这些理论是怎么跟实践结合起来的。
2.单元测试案例
测试需求一
def login_check(username, password):"""登录校验的函数:param username:账号:param password:密码:return: dic type"""if 6 <= len(password) <= 18:if username == 'python18' and password == 'lemonban':return {"code": 0, "msg": "登录成功"}else:return {"code": 0, "msg": "帐号或密码不正确"}else:return {"code": 0, "msg": "密码长度在6-18位之间"}
设计用例测试上面的登录校验功能是否正常
# ========================
# @time:2019/10/27 18:23
# @Author:coco
# @File:01_test_case.py
# @software:PyCharm
# =========================def login_check(username, password):"""登录校验的函数:param username:账号:param password:密码:return: dic type"""if 6 <= len(password) <= 18:if username == 'python23' and password == 'lemonban':return {"code": 0, "msg": "登录成功"}else:return {"code": 0, "msg": "帐号或密码不正确"}else:return {"code": 0, "msg": "密码长度在6-18位之间"}# # 第一步 调用功能函数,传入参数
# result = login_check('python23', 'lemonban')
# excepted = {"code": 0, "msg": "登录成功"}
#
# # 第二步 比对预期结果,和实际结果是否一致
# if result == excepted:
# print('用例执行通过')
# else:
# print('用例执行未通过')
# ========================
# @time:2019/10/27 18:23
# @Author:coco
# @File:01_test_case.py
# @software:PyCharm
# =========================import unittest
from login import login_check"""
unittest是python中的官方库
1.设计测试用例入参 预期结果1 正常登录的用例 正确的账号和密码 {"code": 0, "msg": "登录成功"}2 密码长度低于6位 正确的账号,密码长度低于6位 {"code": 0, "msg": "密码长度在6-18位之间"}3 密码长度大于18位 正确的账号,密码长度低于18位 {"code": 0, "msg": "密码长度在6-18位之间"}4 账号正确,密码有误 正确的账号,错误的密码 {"code": 0, "msg": "帐号或密码不正确"}unittest.TestCase(测试用例类),所有的测试用例类,都是要继承于unittest.TestCase每一条测试用例,就是测试用例类中的一个方法(方法名必须要用test开头)
"""class TestLogin(unittest.TestCase):"""登录校验的测试用例类"""def test_login_pass(self):# 准备测试用例要用到的数据# 入参data = ['python2', 'lemonban']# 预期结果excepted = {"code": 0, "msg": "登录成功"}# 第一步 调用功能函数,传入参数result = login_check(*data)# 第二步 比对预期结果,和实际结果是否一致self.assertEqual(excepted, result)
运行结果:测试通过
运行结果:测试未通过
三、编写测试用例
1.TestCase类编写测试用例
(1)继承unittest里面的TestCase类,继承这个类,写能定测试用例。每个用例都要记得引入fixture,做一些准备以及结束的工作。
(2)编写用例步骤如下:
1)导入unittest模块、被测试文件或其中的类
2)创建一个测试类,并继承unittest.TestCase
3)重写setUp和tearDown方法(如果有初始化条件和结束条件)
4)定义测试函数,函数名以test开头
5)调用unittest.main()方法运行测试用例。
四、测试集合
五、unitest断言介绍
断言方法
六:执行用例&生成报告
1.TextTestRunner的用法
测试用例已经集合完毕,如何来执行用例?
需要用到TextTestRunner,执行测试集合,用到的是TextTestRunner(),用run方法。
day13:Python单元测试(TestCase,TestSuit,TestLoader,TestReport)相关推荐
- Python单元测试框架 unittest详解
一 整体结构概览 unittest原名为PyUnit,是由java的JUnit衍生而来.对于单元测试,需要设置预先条件,对比预期结果和实际结果. TestCase :通过继承TestCase类,我们可 ...
- python单元测试工具_Python的单元测试工具——unittest小结
简介 unittest是Python的内建模块,是Python单元测试的事实标准,也叫PyUnit.使用unittest之前,先了解如下几个概念: test case:测试用例,可以通过创建unite ...
- python单元测试示范卷_Python单元测试--Unittest
原标题:Python单元测试--Unittest 什么是单元测试 单元测试是用来对最小可测试单元(如一个函数.一个类或者一个模块)进行检查和验证.尤其是在对代码进行修改或重构后,可以快速准确的定位出现 ...
- python测试脚本实例-Python单元测试实例详解
本文实例讲述了Python单元测试.分享给大家供大家参考,具体如下: 在Python中进行单元测试需要用到自动单元测试框架PyUnit,Python2.1及其以后的版本都将PyUnit作为一个标准模块 ...
- python简单单元测试示范卷,Python单元测试实例详解
本文实例讲述了python单元测试.分享给大家供大家参考,具体如下: 在python中进行单元测试需要用到自动单元测试框架pyunit,python2.1及其以后的版本都将pyunit作为一个标准模块 ...
- python单元测试框架之unittest和pytest的区别
前言 今天呢笔者想和大家来聊聊Python单元测试框架,我们都知道python单元测试框架有很多,大家平时经常使用的是unittest,因为它比较基础,并且可以进行二次开发,如果你的开发水平很高,集成 ...
- 【整理】Python 单元测试框架 - PyUnit
1 概况 Python单元测试框架(The Python unit testing framework),简称为PyUnit, 是Kent Beck和Erich Gamma这两位聪明的家伙所设计JUn ...
- Python单元测试及unittest框架用法实例解析
例题取用登录模块:代码如下 def login_check(username,password):''' 登录校验的函数:param username:账号:param password: 密码:re ...
- Python单元测试--使用装饰器实现测试跳过和预期故障
Python单元测试unittest中提供了一下四种装饰器实现测试跳过和预期故障.(使用Python 2.7.13) 请查考Python手册中: https://docs.python.org/dev ...
最新文章
- mvc mvp mvvm的区别与联系_MVC,MVP,MVVM比较以及区别(上)
- 20210709未来智能实验室收录资料
- python mysql倒序_day40:MySQL:python操作mysql:pymysql模块SQL注入攻击
- python抽象类可以实例化吗,是否可以在Python中创建抽象类?
- 使用Nginx在windows和linux上搭建集群
- 安卓10侧边返回_安卓 10 细节曝光,这两个功能更好用了
- java-DBUtils的练习题
- CAN总线波特率的计算方法
- Android studio进行文件,代码对比
- 前IBM人工智能科学家为你解读AI行业的三大核心素养
- echarts地图(中国地图展示各省数据)
- deepin虚拟机安装教程
- MongoDB windows 局域网连接
- vnc以及xfce安装\xrdp连接
- php编程输出心形图案_利用php输出不同的心形图案
- 学习笔记(16):C++编程FFMpeg(QT5+OpenCV)实战--实时美颜直播推流-推流基于rtsp协议的大华海康相机...
- 通过阿里云api获取ecs主机信息
- xp 计算机没装网络控制器,XP系统如何安装没有线网卡驱动?
- 面向智能网联汽车边缘网络的分布式端-边协同算法
- 已被Windows defender smartscreen阻止
热门文章
- java 并发问题存在的原因 解决方案
- Couldn‘t get size: 0x800000000. Ubuntu18.04安装问题
- Unity实现虚拟摇杆
- Quartus破解时报错:Current license file does not support the EP4CE10F17C8 device
- TCP协议服务端与客户端
- 2023实习面试公司【二】
- 软件开发大爆炸,被诺基亚错过的Qt正迎来黄金时代
- 针对Android APK和API的免费漏洞扫描工具,Yaazhini
- 使用AVPlayer自定义支持全屏的播放器(一)
- 互联网协议 — UDP — 报文格式