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

news2024/11/24 6:29:58

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/"+filename
    def 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.coloradmin.cn/o/1288155.html

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

相关文章

用Python手把手教你WordCloud可视化

目录 WordCloud是什么? 具体使用 总结 WordCloud是什么? WordCloud是一种数据可视化技术,通过根据文本中单词的频率或权重来生成一个视觉上吸引人的词云图。在词云图中,单词的大小和颜色通常与其在文本中的出现频率相关&#…

【Java Web学习笔记】5 - XML

项目代码 https://github.com/yinhai1114/JavaWeb_LearningCode/tree/main/xml 零、在线文档 XML系列教程 一、XML引出 1.为什么需要XML 1.需求1 :两个程序间进行数据通信? 2.需求2:给一台服务器,做-一个配置文件,当服务器程序启动时,去…

synxflow 安装环境

介绍: 该软件可以动态模拟洪水淹没,滑坡跳动和泥石流使用多个cuda支持的gpu。它还提供了一个用户友好但多功能的Python界面,可以完全集成到数据科学工作流程中,旨在简化和加速危害风险评估任务。 这个包我从网上找到的资源特别特…

【WPF.NET开发】构造动态布局

本文内容 系统必备创建项目配置默认的 Grid Panel 控件向面板中添加控件测试布局汇总所有内容后续步骤 在动态定位中,您通过指定子元素相对于父元素应该如何排列以及应该如何包装来排列子元素。 您还可以将窗口和控件设置为在其内容扩展时自动扩展。 适用于 Vis…

Avalonia中使用Prism实现区域导航功能

前言 上一篇文章我们讲了在Avalonia开发中,引入Prism框架来完成项目的MVVM迁移。本章内容将带领大家学习如何在Avalonia中使用Prism框架实现区域导航功能。如果你还不知道Avalonia中如何引入Prism框架,请看我上一篇文章:Avalonia框架下面使用…

公有云迁移研究——AWS DMS

大纲 1 什么是DMS2 DMS的作用3 DMS在迁移的时候都做些什么4 在使用DMS的时候我们需要做些什么5 操作5.1 创建两个数据库终端节点5.2 创建迁移任务 6 可能遇到的问题7 总结 在本地机房或其他云往AWS上做迁移时,往往会遇到数据库迁移的任务。如果数据量不是特别大&…

【unity3D】Transform组件(如何访问和获取Transform组件)

💗 未来的游戏开发程序媛,现在的努力学习菜鸡 💦本专栏是我关于游戏开发的学习笔记 🈶本篇是unity的Transform组件 Transform组件 基础知识介绍三个成员变量常用属性扩展 Transform的相关查找方法静态方法 基础知识 介绍 在Unit…

ELK(一)—介绍

一、ELK介绍 ELK是指Elasticsearch、Logstash和Kibana,这三个开源软件构成了一个功能强大的日志管理和分析平台。Elasticsearch作为分布式搜索引擎,负责实时存储和检索大规模数据;Logstash用于从多个数据源采集、处理和传输日志数据&#xff…

分包(微信小程序)

首先,微信小程序中使用分包是为了减少首屏的请求,因为微信小程序会默认下载主包内的内容并展示到页面上,但是随着业务量的增加,代码量也会越来越大。会导致我们启动小程序的时候首页加载速度过慢的这个问题。这时我们就可以采用分…

dockerdesktop推送镜像到dockerhub

1.查看镜像(打开powershell) docker ps2.打tag docker tag pengzx/aspnetcoredocker:v1 pengzx/aspnetcoredocker:v2pengzx/aspnetcoredocker:v1:本地的镜像名加版本号 pengzx/aspnetcoredocker:v2:需要上传的镜像名(要以dockerhub的用户名开头/本地镜像…

Data Linked UI

DataLinkedUl是一个Unity框架,它允许您在为您的应用程序创建用户界面时实现专业的数据驱动方法。使用此资产,您可以创建灵活的基于瓦片的任意大小的复杂接口系统。 核心功能: 灵活性-允许适应和调整数据变化,允许各种结构和功能配置,而不需要对现有系统进行重大破坏。 可伸…

HTTP之跨域

HTTP之跨域 跨域(Cors)两种请求简单请求浏览器不同的处理方式Access-Control-Allow-OriginAccess-Control-Allow-CredentialswithCredentials属性 非简单请求服务器回应:什么时候会触发OPTIONS(预检请求)呢&#xff1f…

ubuntu 20.04 server 安装 zabbix

ubuntu 20.04 server 安装 zabbix 参考文档 https://zhuanlan.zhihu.com/p/587415883?utm_id0 https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/ https://blog.csdn.net/ammc520/article/details/134279322 在Ubuntu 20.04上安装MySQL教程 https://b…

高防IP是什么? 防护CC 对抗DDOS

什么是DDoS高防IP? DDoS(分布式拒绝服务)攻击是指攻击者通过利用大量恶意流量向目标服务器发送请求,导致目标服务器无法正常处理合法用户的请求。DDoS高防IP是一种通过技术手段来应对DDoS攻击的解决方案。它能够过滤掉恶意流量&a…

算法 搜索

深度优先搜索 广度优先搜索 深搜与广搜的区别 深搜 dfs——回溯——“不撞南墙不回头” 思路 总的来说是不撞南墙不回头,相当于一个人严格按照固定的行为模式。 例如走方格,依次走上下左右,每次走到一个新格子记录自己已经走过的方向&am…

亿胜盈科ATR2037 无限射频前端低噪声放大器

亿胜盈科ATR2037 是一款应用于无线通信射频前端,工作频段为 0.7 到 6GHz 的超低噪声放大器。 ATR2037 低噪声放大器采用先进的 GaAs pHEMT 工艺设计和制作,ATR2037 低噪声放大器在整个工作频段内可以获得非常好的射频性能超低噪声系数。 亿胜盈科ATR203…

班级查分软件制作教程:老师必备技能!

首先,你需要选择一个合适的软件平台来制作班级查分软件。推荐使用群发成绩,因为它是一个功能强大且易于使用的在线查询系统,可以帮助你快速高效地制作班级查分软件​。 在制作班级查分软件之前,你需要准备好学生的成绩数据。这可以…

云原生的 CI/CD 框架tekton - pipeline(一)

文章目录 1. 官方介绍2. 组件2.1 Tekton Pipelines2.2 部署pipeline2.3 部署dashborad2.3.1 task2.3.2 taskrun2.3.3 Pipeline2.3.4 PipelineRun 3. 案例案例1: 拉取代码并查看readmestep1: 创建task - 拉取代码step2: 创建task - 查看reamdestep3: 创建task的编排 - pipelines…

函数递归。

文章目录 前言一、什么是递归二、递归的限制条件三、递归举例1.求n的阶乘2. 举例2:顺序打印一个整数的每一位 四、递归的优劣总结 前言 不多废话了,直接开始。 一、什么是递归 递归是学习C语言函数绕不开的⼀个话题,那什么是递归呢&#xf…

桥接网卡绑定

目录 1、创建一个桥接设备和会话 2、配置软件桥接网卡的IP地址、网关和地址获取方式 3、添加从设备和会话到桥接设备 4、启动从设备会话 5、启动桥接会话 ​ 桥接就是把一台机器上的若干个网络接口连接起来,其结果是,其中一个网卡收到的…