从零开始,轻松实现Python接口自动化测试(基于PyCharm)

1.接口清单整理

(1)请求:

  • 请求URL
  • 请求方法
  • 请求参数
  • 请求报文

(2)响应

  • 状态码
  • 响应数据

2.用例设计

(1)单接口测试用例

  • 模板:id、模块、接口名称、请求URL、用例名称、请求方法、请求参数类型、请求参数、预期结果、、备注
  • 注意:单接口颗粒度放的比较小(以测试数据为颗粒度)

(2)多接口测试用例

  • 模板:id、模块、接口名称、请求URL、用例名称、请求方法、请求参数类型、请求参数、预期结果、、备注
  • 注意:多接口颗粒度以每个接口为基础,每个接口内所设计的数据可以通过参数化来解决
现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:310357728【暗号:csdn888】

3.测试用例转化为代码实现

工具:Pycharm

项目搭建-自动化测试目结构

api:基于项目模块,一个模块建立一个模块文件

case:业务层的代码,基于unittest框架去执行test方法

data:测试数据、测试的预期结果、参数化 存储文件

report:生成的报告

tools:如果中间使用第三方工具,就把第三方工具放在里面

run_suit.py:运行入口,运行测试套件,执行用例,生成报告

(1)接口对象层封装(api)

以手机验证登陆为例

api_login.py

# 导包:               
import requests# 新建类:            
class  ApiLogin(object):    #类名:以大驼峰的形式把模块名称搬进来# 新建方法:               def api_post_login(self,url,mobile,code):# headers定义:                 headers={“Content-Type”:“application/json”}# 定义data报文:                data={“mobile”:mobile,“code”:code}# 调用post并返回响应对象:return request.post(url,headers=headers,json=data)     
#url、mobile、code最后都需要从data数据文件读取出来,做参数化使用,所以这里使用动态传参

(2)接口业务层实现(case)

test_login.py

# 导包:
import unittest
from api.api_login import ApiLogin# 读取数据:
def get_data():data=ReadJson("login.json").read_json()arrs=[]arrs.append(data.get("url")data.get("mobile")data.get("code")data.get("except_result")data.get("status_code"))retrn arrs# 新建测试类:
class TestLogin(unittest.TestCase):# 新建测试方法:@parameterized .expend(get_data())def test_login(self,url,mobile,code,except_result,status_code):# 调用登陆方法:s=ApiLogin().api_post_login(url,mobile,code)# 断言 响应信息及状态码:self.assertEquals(“except_result”,s.json()[‘message’] )self.assertEquals(status_code,s.status_code )if _name_=='_main_'unittest.main()

(3)登陆数据json编写(data)

login.json

{url:“...”mobile:“...”code:“...”except_result:“...”status_code:“...”
}

(4)读取json工具(tools)

read_json.py

# 导包:
import json# 打开json文件并获取文件流(使用函数进行封装、使用参数替换静态文件名):
class ReadJson(object):def _init_(self,filename)self.filepath="../data/"+filenamedef read_json(self):with open(self.filepath,"r',encoding="utf-8") as f:return json.load(f)  #调用load方法加载文件流if _name_=='_main_'datas= ReadJson(“login.json”).read_json()
# #新建空列表,添加读取json数据arrs=[]arrs.append(data.get("url")data.get("mobile")data.get("code")data.get("except_result")data.get("status_code"))print(arrs)

(5)运行主入口实现

run_suite.py

# 导包:
import unittest
import time
from tools.HTMLTestRunner import HTMLTestRunner  
#第三方工具生成HTMLTestRunner生成测试报告, 前面是模块名称后面是类名,# 组装测试套件:
suite=unittest.defaultTestLoader.discover(“./case”,pattern=“test.py”)# 指定报告存放路径及文件名称:
file_path=“./report/{}.html”.format(time.strftime(“%Y_%m_%d_%H_%M_%S”))# 运行测试套件并生成测试报告:
with open(file_path,"wb") as f:HTMLTestRunner(stream=f).run(suite)

END今天的分享就到此结束了!点赞关注不迷路!

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

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

相关文章

解决typescript报错:找不到名称xxx

现象: 原因:在同时导入默认导出和命名导出时,默认导出必须放在命名导出之前 下面的就是原始文件: 默认导出指: export default导出类型, import时无需大括号 命名导出指: 仅有export关键字…

优化汽车产业用户营运:精细化策略

近年来随着互联网时代新技术浪潮的冲击,商业社会中各种原生边界不断被打破,新的消费需求、新的商业模式、新的竞争挑战层出不穷。各行业往往面临重重困境与迷思,学会如何精细化运营用户显得尤为重要。立即阅读阅文,详细了解其中用…

手动创建spring bean并注入

文章目录 前言一、jar包中,相同class不同类加载器加载的时候是同一个class嘛?二、利用ConfigurableListableBeanFactory手动注册bean注册bean,并自动注入依赖bean根据类型获取注入的bean,两个bean是一个吗? 三、同一份字节码,class隔离,bean隔离总结 前言 注入一个…

python打包exe,打包好后,启动exe报错找不到paddleocr

目录 1、安装pyinstaller 2、生成脚本文件的.spce文件 3、资源文件配置 4、生成exe文件 5、使用了paddleocr启动exe后报错 6、配置.spce文件 7、重新生成exe文件 8、关于图片找不到的问题 参考:PaddleOCR打包exe--Pyinstaller_paddleocr 打包exe_mjiansun的博…

JS初步了解this

什么是环境对象? 环境对象:指的是函数内部特殊的变量this,它代表着当前函数运行时所处的环境 作用:弄清楚this的指向,可以让我们代码更简洁 在普通函数中: // 每个函数里面都有this 普通函数的this指向wind…

面试多线程八股文十问十答第三期

面试多线程八股文十问十答第三期 作者:程序员小白条,个人博客 相信看了本文后,对你的面试是有一定帮助的! ⭐点赞⭐收藏⭐不迷路!⭐ 1.介绍一下自旋锁 重量级锁竞争时,尝试获取锁的线程不会立即阻塞&…

高效合并技巧:视频合并,保证质量,提升剪辑效率

在视频制作过程中,视频剪辑和合并是常见的操作步骤。不过这些步骤往往需要耗费大量的时间和精力。那要如何提高效率呢?下面讲解一些高效合并技巧,引用云炫AI智剪快速整合视频,随机合并视频,保证质量,并提升…

【Linux--进程】

目录 一、基本概念1.1描述进程-PCB1.2task_struct中内容分类 二、了解进程2.1查看进程2.2通过系统调用获取进程标识符 三、fork创建进程3.1fork()函数3.2写时拷贝 四、进程的状态4.1操作系统学科里的进程状态(运行、阻塞、挂起)4.具体的Linux状态是如何维…

xampp环境安装

XAMPP是完全免费且易于安装的Apache发行版,其中包含Apache、MariaDB、PHP和Perl。 类似XAMPP的服务器套件还有很多,我用过的还有UPUPW,它们都极大的简化了开发环境的配置。 下载链接Download XAMPP 我选的最新的 一路next就安装好了。 访问…

百度曾出价 8500 万挖“AI 教父”被拒;GPT-3.5 图灵测试中败给上世纪 AI丨 RTE 开发者日报 Vol.99

开发者朋友们大家好: 这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE (Real Time Engagement) 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文…

创建 Python Docker 镜像的完整指南

更多资料获取 📚 个人网站:ipengtao.com Python和Docker是两个极其流行的技术,结合它们可以创建强大的应用程序。Docker允许将应用程序及其依赖项打包到一个独立的容器中,而Python则提供了丰富的库和工具来开发应用程序。本文将提…

2023年12月5日作业:多态

题目&#xff1a; 代码&#xff1a; #include <iostream>using namespace std;class Animals { private:string name; public:Animals(){}Animals(string name):name(name){}virtual void perform() 0;void show(){cout << "这个动物是" << name…

使用肘部法则选择KMeans聚类中的k值

在这篇文章中&#xff0c;我们将讨论如何选择最好的k&#xff08;聚类数&#xff09;的k-Means聚类算法。 肘部法则简介 任何无监督算法的基本步骤是确定数据可以被聚类到的聚类的最佳数量。因为我们在无监督学习中没有任何预定义数量的聚类。我们倾向于使用一些可以帮助我们…

通过断点调试解决node 运行js程序直接退出(没有任何报错提示)的问题

现象&#xff1a; node运行程序直接退出&#xff0c;但是从echo $?的返回值可以知道&#xff1a; 一定出现了错误&#xff0c;但是没有显示出来 解决办法&#xff1a; 1. 使用node --inspect-brk 启动程序 然后在浏览器访问chrome://inspect 然后点击inspect 进行单步调试 …

Java中的File详细说明

File的概述--> File常见的构造方法--> 代码示范---> /*public File(String pathname) 根据文件路径创建文件对象根据字符串表示的路径&#xff0c;创建File对象*/String str "E:\\java_code\\a.txt";File f1 new File(str);System.out.println(f1);//结果…

000FreeCAD源码学习--MainGui.cpp

目录 1 MainGui.cpp源代码 2 int main()函数分析 3 编译运行截图 FreeCADMain项目下的MainGui.cpp 1 MainGui.cpp源代码 int main( int argc, char ** argv ) { #if defined (FC_OS_LINUX) || defined(FC_OS_BSD)setlocale(LC_ALL, ""); // use native environm…

使用pyscenedetect进行视频场景切割

1. 简介 在视频剪辑有转场一词&#xff1a;一个视频场景转换到另一个视频场景&#xff0c;场景与场景之间的过渡或转换&#xff0c;就叫做转场。 本篇介绍一个强大的开源工具PySceneDetect&#xff0c;它是一款基于opencv的视频场景切换检测和分析工具&#xff0c;项目地址: h…

龙迅#LT8311X3 USB中继器应用描述!

1. 概述 LT8311X3是一款USB 2.0高速信号中继器&#xff0c;用于补偿ISI引起的高速信号衰减。通过外部下拉电阻器选择的编程补偿增益有助于提高 USB 2.0 高速信号质量并通过 CTS 测试。 2. 特点 • 兼容 USB 2.0、OTG 2.0 和 BC 1.2• 支持 HS、FS、LS 信令 • 自动检测和补偿 U…

界面控件DevExpress WPF导航组件,助力升级应用程序用户体验!(上)

DevExpress WPF的Side Navigation&#xff08;侧边导航&#xff09;、TreeView、导航面板组件能帮助开发者在WPF项目中添加Windows样式的资源管理器栏或Outlook NavBar&#xff08;导航栏&#xff09;&#xff0c;DevExpress WPF NavBar和Accordion控件包含了许多开发人员友好的…

Python OS模块常用方法整理

os模块包含了普遍的操作系统和文件目录方法 引入类库 首先需要引入类库 import os 常用方法 OS模块方法 获取操作系统类型 nt->window:Microsoft Windows NT posix->Linux/Mac OS: Portable Operating System Interface of UNIX&#xff08;可移植操作系统接口&…