接口测试Day06-UnitTest框架

UnitTest 是开发人员用来实现 “单元测试” 的框架。测试工程师,可以在自动化 “测试执行” 时使用。
使用 UnitTest 的好处:

  1. 方便管理、维护测试用例。
  2. 提供丰富的断言方法。
  3. 生成测试报告。(需要插件 HTMLTestReport)

UnitTest框架回顾

  • TestCase
# 1 导包:import unittest# 2 定义测试类从 TestCase 类继承
class TestXXX(unittest.TestCase):pass# 3 测试方法定义必须以 test 开头。 建议添加 编号!
class TestXXX(unittest.TestCase):def test01_xxx(self):pass
  • Fixture
1、方法级别的 setUp(self) tearDown(self) 每个普通方法执行 之前/之后 自动运行。2、类级别的 setUpClass(cls) tearDownClass(cls) 在类内所有方法直 之前/之后 运行一次。
  • TestSuite
# 1、实例化测试集对象 
suite = unittest.TestSuite()
# 2、添加指定类的全部测试方法。
suite.addTest(unittest.makeSuite(类名))
# Testsuite 通过搜索创建测试集
# suite = unittest.TestLoader().discover(搜索目录, 搜索文件名)
suite = unittest.TestLoader().discover("./", "test*.py")
  • TestRunner
runner = HTMLTestReport("./report1.html", description="描述信息", title="报告标题")
runner.run(suite)
  • 实例:测试类
    py02_unittest_demo.py
"""
unittest 测试框架代码所处文件要求: 遵守 标识符命名规范
1、只能使用 字母、数字、下划线
2、数字不能开头
3、避免使用关键字、已知函数名类: 首字母必须大写 ,建议 以 Test 开头方法:必须 test 开头,建议 编号"""
import unittest# 待测试方法
def add(x, y):return x + y# 封装测试类,从 unittest.TestCase 类继承
class TestAdd(unittest.TestCase):def setUp(self):print("-------setUp------")def tearDown(self):print("--------tearDown-----")@classmethoddef setUpClass(cls):print("======setUpClass=====")@classmethoddef tearDownClass(cls):print("======tearDownClass=====")def test01_add(self):print("测试方法一")ret = add(10, 20)# 断言 响应结果self.assertEqual(30, ret)def test02_add(self):print("测试方法二")ret = add(100, 200)# 断言self.assertEqual(300, ret)
  • 示例:生成测试报告

run_suite.py

import unittest
from py02_unittest_demo import TestAdd
from htmltestreport import HTMLTestReport# 创建suite 实例
suite = unittest.TestSuite()# 指定测试类,添加测试方法
suite.addTest(unittest.makeSuite(TestAdd))# 创建 HTMLTestReport 实例
runner = HTMLTestReport("测试报告.html")
# 调用 run() 传入 suite
runner.run(suite)
  • 生成测试报告
    在这里插入图片描述
  • Tpshop案例
import unittest
import requests
import ddddocr# ocr = ddddocr.DdddOcr()   # 实例化# 定义测试类
class TestTpShopLogin(unittest.TestCase):# 添加测试方法def test01_login_ok(self):# 1、创建一个Session实例session = requests.session()# 2、使用Session 实例,调用 get方法,发送 获取验证码请求。(不需要获取cookie)ver_code_url = "http://192.168.0.105/index.php?m=Home&c=User&a=verify&r=0.6594435226417572"resp_v = session.get(url=ver_code_url)# 保存验证码图片save_path = 'captcha.png'ocr = ddddocr.DdddOcr()  # 实例化# 保存图片with open(save_path, 'wb') as f:f.write(resp_v.content)# 打开图片with open('captcha.png', 'rb') as f:# 读取图片img_bytes = f.read()# 识别图片res = ocr.classification(img_bytes)print(res)# 将验证码中的小写转为大写字母,数字和大写字母保持不变res_string = res.upper()print(res_string)# 3. 使用 同一个 Session 实例,调用 post方法,发送 登录请求。(不需要携带 cookie)login_url = "http://192.168.0.105/index.php?m=Home&c=User&a=do_login&t=0.1419723578303651"data = {"username": 13800138006,"password": 123456,"verify_code": res_string}resp = session.post(url=login_url, data=data)# 打印响应结果print(resp.json())# 断言 响应状态码为 200self.assertEqual(200, resp.status_code)# 断言 msg 的值为“登陆成功”self.assertIn("成功", resp.json().get('msg'))# 断言 status的值为 1self.assertEqual(1, resp.json().get('status'))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/66217.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《learn_the_architecture_-_trustzone_for_aarch64_102418_0101_03_en》学习笔记

1.TrustZone是Arm A-profile架构中安全架构的名称。TrustZone首次在Armv6K中引入,Armv7-A和Armv8-A也支持。TrustZone提供两个执行环境,它们之间具有系统范围的硬件强制隔离。在Arm架构中,有两种安全状态:安全和非安全。在EL0、EL…

小程序组件 —— 28 组件案例 - 推荐商品区域 - 实现结构样式

这一节目标是实现底部推荐商品的结构和样式,由于这里要求横向滚动,所以需要使用上节介绍的 scroll-view 功能,并使用 scroll-x 属性支持横向滚动,推荐商品区域中的每一个商品是一个单独的 view,每个view 中需要写三个组…

【Spring Boot】Spring AOP 快速上手指南:开启面向切面编程新旅程

前言 🌟🌟本期讲解关于spring aop的入门介绍~~~ 🌈感兴趣的小伙伴看一看小编主页:GGBondlctrl-CSDN博客 🔥 你的点赞就是小编不断更新的最大动力 🎆那么废话不…

数据结构(AVL树)

BST的退化 仔细观察BST你会发现,虽然他有良好的“搜索”特性,也就是:你可以利用其节点之间的大小关系,很容易地从根节点开始往下走找到你要的节点,但他却无法保证这种搜索所需要的时间的长短,因为建立BST时…

SAP 01-初识AMDP(ABAP-Managed Database Procedure)

1. 什么是AMDP(ABAP-Managed Database Procedure) 1.)AMDP - ABAP管理数据库程序,是一种程序,我们可以使用SQLSCRIPT在AMDP内部编写代码,SQLSCRIPT是一种与SQL脚本相同的数据库语言,这种语言易于理解和编码。 将AM…

Anaconda环境配置(Windows11+python3.9)

文章目录 一、 下载ANACONDA(1)点击**Free Download**。(2)点击“skip registration”,跳过登录。(3)下载对应操作系统的ANACONDA版本。 二、 安装ANACONDA(1)双击运行安…

Git命令行的使用

目录 一、什么是Git 1、本地仓库 vs 远端仓库 本地仓库 远端仓库 2、.git vs .gitignore .git .gitignore 二、使用Git命令 1、安装git 2、git首次使用需要配置用户邮箱和用户名 3、上传目录/文件到远端仓库步骤 1)创建放置文件的目录 2)cd…

后台管理系统动态面包屑Breadcrumb组件的实现

在后管理系统开发中,面包屑导航是一个非常常见的功能,通常是根据当前的 url 自动生成面包屑导航菜单,当跳转路由发生变化时,面包屑导航都会随之发生变化,即动态面包屑。 要完成动态面包屑我们需要制作一个动态数组&am…

小程序租赁系统开发的优势与应用前景分析

内容概要 小程序租赁系统是一种新兴的数字化解决方案,旨在为用户提供更加便捷与高效的租赁服务。它通常包括一系列功能,如在线浏览、即时预定、支付功能以及用户反馈机制。这些系统在使用上极为友好,让用户能够轻松选择所需的商品或服务&…

凸包(convex hull)简述

凸包(convex hull)简述 这里主要介绍二维凸包,二维凸多边形是指所有内角都在 [ 0 , Π ] [0,\Pi ] [0,Π]范围内的简单多边形。 凸包是指在平面上包含所有给定点的最小凸多边形。 数学定义:对于给定集合 X X X,所有…

小波与傅里叶变换在去噪效果上的对比分析-附Matlab源程序

👨‍🎓 博主简介:博士研究生 🔬 超级学长:超级学长实验室(提供各种程序开发、实验复现与论文指导) 📧 个人邮箱:easy_optics126.com 🕮 目 录 摘要一、…

CVPR2019 | AA | 特征空间扰动产生更具迁移性的对抗样本

Feature Space Perturbations Yield More Transferable Adversarial Examples 摘要-Abstract引言-Introduction相关工作-Related WorkTransferability Metrics-迁移性指标激活攻击方法-Activation Attack Methodology损失函数-Loss Function攻击算法-Attack Algorithm 实验设置…

游戏如何检测Root权限

Root权限,即超级用户权限,在Android系统中,获取Root权限意味着用户可以修改系统文件、移除预装应用、安装特殊应用等。 在Root环境下,游戏面临着相当大的安全隐患,用户获取了最高权限,意味着可以通过各类工…

MySQL性能优化explain关键字详解

系列文章目录 一、MySQL数据结构选择 二、MySQL性能优化explain关键字详解 三、MySQL索引优化 文章目录 系列文章目录一、explain是什么?二、explain字段详解2.1、ID2.2、select_type2.3、table2.4、partitions2.5、type(重点)2.6、key2.7、…

【Go学习】-01-5-网络编程

【Go学习】-01-5-网络编程 1 互联网协议介绍1.1 互联网分层模型 2 Go网络编程2.1 socket编程2.1.1 socket图解2.2.2 TCP编程2.2.3 UDP编程 2.3 http编程2.3.1 web工作流程2.3.2 HTTP协议 2.4 WebSocket编程2.5 聊天室的小例子2.5.1 server.go文件代码2.5.2 hub.go文件代码2.5.3…

推荐系统重排:MMR 多样性算法

和谐共存:相关性与多样性在MMR中共舞 推荐系统【多样性算法】系列文章(置顶) 1.推荐系统重排:MMR 多样性算法 2.推荐系统重排:DPP 多样性算法 引言 在信息检索和推荐系统中,提供既与用户查询高度相关的文…

简历_熟悉缓存高并发场景处理方法,如缓存穿透、缓存击穿、缓存雪崩

系列博客目录 文章目录 系列博客目录1.缓存穿透总结 2.缓存雪崩3.缓存击穿代码总结 1.缓存穿透 缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在,这样缓存永远不会生效,这些请求都会打到数据库。 常见的解决方案有两种: 缓存空对…

Rabbitmq追问1

如果消费端代码异常,未手动确认,那么这个消息去哪里 2024-12-31 21:19:12 如果消费端代码发生异常,未手动确认(ACK)的情况下,消息的处理行为取决于消息队列的实现和配置,以下是基于 RabbitMQ …

STM32-笔记37-吸烟室管控系统项目

一、项目需求 1. 使用 mq-2 获取环境烟雾值,并显示在 LCD1602 上; 2. 按键修改阈值,并显示在 LCD1602 上; 3. 烟雾值超过阈值时,蜂鸣器长响,风扇打开;烟雾值小于阈值时,蜂鸣器不响…

2、pycharm常用快捷命令和配置【持续更新中】

1、常用快捷命令 Ctrl / 行注释/取消行注释 Ctrl Alt L 代码格式化 Ctrl Alt I 自动缩进 Tab / Shift Tab 缩进、不缩进当前行 Ctrl N 跳转到类 Ctrl 鼠标点击方法 可以跳转到方法所在的类 2、使用pip命令安装request库 命令:pip install requests 安装好了…