pytest+pycharm+HTMLTestReportCN实现接口自动化

前提:已安装pycharm,已配置python环境

第一步:新建一个py类,用来执行all的测试用例

import HTMLTestReportCN
import unittest, os, yagmail# -*- coding: utf-8 -*-
"""
@Time : 2024/9/2 14:50
@Auth : dongjinjin
@IDE :PyCharm
"""def run_case(fileName, htmlName):#获取当前文件的路径test_dir = os.path.dirname(__file__)#定义执行gfyl_case.py用例discover = unittest.defaultTestLoader.discover(test_dir, pattern=fileName)print(discover)#定义存储测试报告的路径和文件名filename = os.path.dirname(os.path.dirname(test_dir)) + '/py-test-gfyl/report/' + htmlNamefp = open(filename, 'wb')runner = HTMLTestReportCN.HTMLTestRunner(stream=fp, title='接口自动化测试报告', description='Implementation Example with: ',tester='dongjinjin')print("""测试进行中,请耐心等候......""")try:#执行用例runner.run(discover)except Exception as e:raise eelse:print('测试结束,测试运行无异常')fp.close()email = yagmail.SMTP(user='1578845978@qq.com', password='tonhkqehtmnnibdf', host='smtp.qq.com')# 设置测试结果报告接收人邮箱及内容email.send(to='1578845978@qq.com', subject='接口自动化测试报告', contents='您好请查收', attachments=filename)if __name__ == '__main__':# 设置执行测试用例的文件和生成的测试报告文件名 并执行该脚本run_case('gfyl_cases.py', 'walletResult.html')

第二步:定义一个requests请求类,包括GET、POST接口请求方法

# -*- coding: utf-8 -*-
"""
@Time : 2024/9/2 15:43
@Auth : dongjinjin
@IDE :PyCharm
"""
import requests
from urllib.parse import urlparse, parse_qsclass h5apirequests:base_url = "接口url"token_value = None  # 类变量,用于存储token@classmethoddef setUp(cls):# 目标URLurl = "h5访问链接url"# 发送GET请求response = requests.get(url)# 从响应中获取cookiecookies = response.url# 解析URLparsed_url = urlparse(cookies)query_params = parse_qs(parsed_url.fragment)  # 因为token在hash后面,所以使用fragment# 获取token值cls.token_value = query_params.get('token', [None])[0]  # 使用列表解析并获取第一个元素print(cls.token_value)@classmethoddef send_request(cls, method, api_method, params=None, json=None):full_url = f"{cls.base_url}/{api_method}"  # 构建完整的URL地址token = cls.token_valueheaders = {'Content-Type': 'application/json','token': token}try:if method.upper() == 'GET':response = requests.get(full_url, headers=headers, params=params)elif method.upper() == 'POST':response = requests.post(full_url, headers=headers, json=json)else:raise ValueError(f"Unsupported method: {method}")response.raise_for_status()  # 检查响应状态码return responseexcept requests.exceptions.RequestException as e:print(f"Request failed: {e}")return None# 测试代码
if __name__ == '__main__':h5apirequests.setUp()  # 调用setUp获取tokeninstance = h5apirequests()  # 创建实例api_method = 'getReimbursementUser'params = {'userId': 'd7a5071c937332c819fd668ef6aa03d7'}response = instance.send_request('GET', api_method, params=params)if response:print('\n返回结果:\n%s' % response.text)response_data = response.json()response_code = response_data.get('code')# # 断言code值是否为200# if (response_code != 200):#     self.assertEqual(response_code, 200, "Response code is not 200")# else:#     pass

第三步:创建一个存放测试用例执行结果的包

 第四步:创建一个测试类存放单独接口调用的测试方法

import unittestfrom gfyl_requests.h5apirequests import h5apirequestsclass MyTestCase(unittest.TestCase):base_url = "接口url"def test_queryReferralDocuments(self):h5apirequests.setUp()  # 调用setUp获取tokeninstance = h5apirequests()  # 创建实例api_method = 'queryReferralDocuments'params = {'name': '测试二','jobNumber': '999999999','idCard': '110123197010121234'}response = instance.send_request('POST', api_method, json=params)if response:print('\n返回结果:\n%s' % response.text)response_data = response.json()response_code = response_data.get('code')# 断言code值是否为200if (response_code != 200):self.assertEqual(response_code, 200, "Response code is not 200")else:passdef test_getReimbursementUse(self):h5apirequests.setUp()  # 调用setUp获取tokeninstance = h5apirequests()  # 创建实例api_method = 'getReimbursementUser'params = {'userId': 'd7a5071c937332c819fd668ef6aa03d7'}response = instance.send_request('GET', api_method, params=params)if response:print('\n返回结果:\n%s' % response.text)response_data = response.json()response_code = response_data.get('code')# 断言code值是否为200if (response_code != 200):self.assertEqual(response_code, 200, "Response code is not 200")else:pass# if __name__ == '__main__':
#     unittest.main()

第五步: 执行完all测试case,输出测试报告html格式的,可以通过浏览器打开查看

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

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

相关文章

/单元测试

承接上文 统一异常处理&#xff0c;封装结果-CSDN博客 ******************************************** 登录业务 Service public class EmployeeServiceImpl extends ServiceImpl<EmployeeMapper, Employee> implements EmployeeService {Resourceprivate JwtUtils j…

数据库透明加密的定义与原理

数据库透明加密(TDE)是一种先进的加密技术&#xff0c;主要用于保护存储在数据库中的敏感数据&#xff0c;防止未经授权的访问和数据泄露。以下是对数据库透明加密的详细解析&#xff1a; 一、定义与原理 定义&#xff1a;数据库透明加密是一种在数据库管理系统(DBMS)中集成加密…

苹果笔记本电脑能不能玩游戏?苹果电脑玩游戏咋样?

过去Mac玩不了游戏最大的问题&#xff0c;就是图形API自成一体&#xff0c;苹果既不支持微软的DirectX&#xff0c;同时为了推广自家的Metal图形API&#xff0c;又对OpenGL和Vulkan两大主流的通用API敬而远之。游戏生态、硬件瓶颈让苹果电脑不适合玩游戏。 不过说到底&#xf…

点餐收银小程序

一、项目概述 Hi&#xff0c;大家好&#xff0c;今天分享的项目是《点餐收银小程序》。 系统含管理员/商家/用户三种角色&#xff0c;商家能维护菜式类别、维护菜品信息&#xff0c;用户在小程序能够选择门店&#xff0c;查看门店下各个分类的菜式信息&#xff0c;并进行加购…

ai免费生成ppt软件有哪些?我推荐秒出PPT

现在市面上的ai生成PPT软件非常的多。有收费的&#xff0c;也有不收费的&#xff0c;生成的效果也各不相同。要选择一个性价比高的确实难度不小。 我在使用了不少的产品之后&#xff0c;说一说我的心得。 首先就是&#xff0c;大部分免费的ai生成ppt产品并不好用。我怕不排除…

Cortex-A7的运行模式和寄存器组详解

0 参考资料 ARM Cortex-A(armV7)编程手册V4.0.pdf ARM体系结构与编程第2版2 Cortex-A7运行模式 2.1 运行模式 Cortex-A7共有9种运行模式&#xff0c;如下图所示&#xff1a; 除了用户模式之外其它模式均属于特权模式&#xff0c;在特权模式下处理器可以访问所有系统资源&am…

Golang | Leetcode Golang题解之第384题打乱数组

题目&#xff1a; 题解&#xff1a; type Solution struct {nums, original []int }func Constructor(nums []int) Solution {return Solution{nums, append([]int(nil), nums...)} }func (s *Solution) Reset() []int {copy(s.nums, s.original)return s.nums }func (s *Solu…

使用docker容器部署考试系统

8.30 回顾 1、使用harbor仓库 python --version yum -y update yum -y install python2-pip 部署考试系统 使用docker部署project-exam-system 1、在一台主机内&#xff0c;实现容器的编排看&#xff0c;发布考试系统 2、环境准备 docker docker-compose docker脚本 …

【Next】2. 项目构建

打开 Next.js 的官方文档&#xff1a;https://nextjs.org/docs/getting-started/installation&#xff08;国内文档不够新&#xff09; Next.js 版本 14.2 &#xff0c; Node.js 的版本要求必须 > 18.18。 Next 有两种开发模式&#xff0c;下面讲新的 APP Router。 创建项…

【R语言】基于Biomod2集成平台探究物种分布区的构建流程(SDMs)(持续更新中。。。。。。)

Species Distribution Models 1.写在前面2.物种分布模型介绍3.输入数据准备及预处理3.1.如何从GBIF网站上获取分布点数据&#xff08;基于rgbif包&#xff09;3.2.分布点稀疏处理&#xff08;基于spThin函数&#xff09;3.3.如何获取环境变量数据&#xff08;基于getData函数&a…

创建一个Spring MVC项目(配置,导入依赖,以及前端控制器)

Tomcat&#xff08;10.1.28&#xff09;配置 详细讲解&#xff01; 链接https://blog.csdn.net/or77iu_N/article/details/141266535?spm1001.2014.3001.5502 1、创建 Java Web 项目 File -> New -> Project 2、导入 Spring MVC 相关依赖 <dependency> <gro…

汽车乘客热舒适度大挑战,如何利用仿真技术提高汽车环境舒适度

舒适性在人们选择汽车的决定性方面占比越来越重&#xff0c;而汽车乘员舱环境的舒适性是指为乘员提供舒适愉快便利的乘坐环境与条件&#xff0c;包括良好的平顺性、车内的低噪声、适宜的空气环境以及良好的驾驶操作性能。 舒适性 经济性 安全性、动力性 典型的乘员舱热舒适性模…

测试 UDP 端口可达性的方法

前言&#xff1a; UDP (User Datagram Protocol) 是一种无连接的传输层协议&#xff0c;它不像 TCP 那样提供确认机制来保证数据包的可靠传输。因此&#xff0c;测试 UDP 端口的可达性通常需要一些特殊的方法&#xff0c;因为传统的端口扫描工具&#xff08;如 nmap&#xff0…

AGI系列(9)手把手带你玩转 Coze 画板节点

本文以智能体“日签卡片生成器”的制作来阐述 Coze 画板节点的使用方法。 效果演示 核心流程 日签卡片生成器工作流整体分为两部分&#xff1a; 工作流&#xff1a;其核心流程为通过用户输入的主题词生成卡片的标题、内容 图像流&#xff1a;通过LLM输出的内容在图像流完成卡…

Verilog开源项目——百兆以太网交换机(七)包修改模块设计

Verilog开源项目——百兆以太网交换机&#xff08;七&#xff09;包修改模块设计 &#x1f508;声明&#xff1a;未经作者允许&#xff0c;禁止转载 &#x1f603;博主主页&#xff1a;王_嘻嘻的CSDN主页 &#x1f511;全新原创以太网交换机项目&#xff0c;Blog内容将聚焦整体…

Java项目: 基于SpringBoot+mysql网上订餐系统分前后台(含源码+数据库+开题报告+PPT+毕业论文)

一、项目简介 本项目是一套基于SpringBootmysql网上订餐系统分前后台 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c;eclipse或者idea 确保可以运行&#xff01; 该系统功能完善、界面美观、操作简单…

【北森-注册安全分析报告-无验证方式导致安全隐患】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 1. 暴力破解密码&#xff0c;造成用户信息泄露 2. 短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉 3. 带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造…

(二)Kafka离线安装 - Zookeeper下载及安装

一、下载 下载ZooKeeper之前&#xff0c;需要根据下载的Kafka版本&#xff0c;来确定ZooKeeper的版本。 Kafka官方地址&#xff1a;Apache Kafka 1、先下载源码版本&#xff0c;下载完后解压&#xff0c;在kafka-3.8.0-src\gradle目录下找到dependencies.gradle文件&#xff…

我用GPT对RAG技术的学习和探索

思维导图 下图是我的学习和探索过程&#xff0c;红点表示已研究&#xff0c;黄点表示待研究 目录 思维导图RAG技术概述RAG 的关键优点应用场景 如何了解RAG技术的原理和应用1. **基础理论学习**2. **实战演练**3. **学习资源利用**4. **保持学习的连贯性**5. **多角度理解**6. …

RASA使用长文记录以及一些bug整理

RASA 学习笔记整理 一 安装 在虚拟环境中安装&#xff0c;进入python3版本的环境 conda activate python3 ai04机器旧版本&#xff1a;rasa-nlu和rasa-core是分开安装的 最新版本&#xff1a;rasa 将二者做了合并 直接安装 pip3 install rasa 在安装到如下步骤时候会报…