接口测试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…

人工智能-Python网络编程-TCP

1 TCP-概念版 服务端 import socket ​ # 1 创建服务端套接字对象 # socket.AF_INET IPV4 # socket.SOCK_STREAM TCP # socket.SOCK_DGRAM UDP tcp_server_socket socket.socket(socket.AF_INET, socket.SOCK_STREAM) ​ # 2 绑定端口号 tcp_server_socket.bind((192.…

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

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

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

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

集合划分.

本节通过解决集合划分的问题进行一个递归算法的简单实现. 问题描述: 给定正整数n和m,计算出n个元素的集合{1,2,3....}可以划分为多少个不同的有m个非空子集组成的集合. 思路解析: 解读题目,将由n个元素组成的集合拆分成m个非空子集,假设函数名为f.若想将n个元素分成m组,就需要…

广告联盟项目实操教程

我认为很多行业就像一层窗户纸,捅破了大家都能听得懂,谁能在这个行业赚到钱,主要在于你能不能深入了解这个行业的运作逻辑,和你有没有强大的执行力,做到这两点,你不赚钱都难。广告联盟项目也一样&#xff0…

数据结构(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…

力扣--35.搜索插入位置

题目 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums [1,3,5,6], target 5 输出: 2 示例 …

JavaScript 日期格式

在 JavaScript 中,日期格式可以通过 Date 对象进行操作和格式化。下面是一些常见的 JavaScript 日期格式及其示例: 1. ISO 8601 格式 ISO 8601 是一种标准的日期和时间表示方法,格式为 YYYY-MM-DDTHH:mm:ss.sssZ,例如: let date = new Date(); console.log(date.toISOS…

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…

Qt C++ 软件调试内存分析工具Heob(推荐三颗星)

点击上方"蓝字"关注我们 01、Heob 是 what? >>> 绝大部分的文章都说Heob是一个内存泄漏分析工具,其实Heob只是内存泄漏分析功能比较突出,实际上Heob可以分析很多内存问题。 Heob是一个Windows下检测缓冲区溢出(野指针、空指针、内存越界、重复释放、异…

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

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

将 Docker 数据迁移到新磁盘:详细操作指南

将 Docker 数据迁移到新磁盘:详细操作指南 背景 在容器化应用的部署中,Docker 通常将数据存储在默认的 /var/lib/docker 目录。然而,随着容器数量的增加和镜像的累积,该目录可能会迅速占满系统磁盘空间,从而影响系统…

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

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

Python PrettyTable:让表格变得漂亮又简单

Python PrettyTable:让表格变得漂亮又简单 什么是PrettyTable?安装PrettyTable创建一个简单的表格自定义表格样式对齐方式边框样式 使用场景总结 大家好!今天我们要来学习一个非常有趣的Python库——PrettyTable。这个库可以帮助我们轻松地创…

Pytorch 三小时极限入门教程

一、引言 在当今的人工智能领域,深度学习占据了举足轻重的地位。而 Pytorch 作为一款广受欢迎的深度学习框架,以其简洁、灵活的特性,吸引了大量开发者投身其中。无论是科研人员探索前沿的神经网络架构,还是工程师将深度学习技术落…

凸包(convex hull)简述

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

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

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