【03】霍格沃兹测试开发学社技术学习笔记之服务端接口测试

本文主要是介绍【03】霍格沃兹测试开发学社技术学习笔记之服务端接口测试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

# 服务端接口测试

接口测试场景

场景

测试工具

测试类型工具价值
接口抓包Charles,Fiddler,TCPdump,mitmproxy抓包工具可以获取app的数据包
接口测试postman接口调试工具,学习成本低,直接安装即可使用
接口自动化测试requests、restAssured用于接口自动化测试的Java、python第三方库,需要与对应编程语言结合使用
性能测试Jmeter性能测试工具

示例

环境:python 3.10,pycharm工具,Request 框架

单接口请求
import requests
# 第一种方式
requests.get(url)
# 第二种方式
requests.request("get", url)
请求加参数
import requests
header = {"User-Agent": "hogwarts"}
url = "https://httpbin.ceshiren.com/get"
# 定制请求头信息
r = requests.get(url, headers = header)
print(r.json())

请求参数化

import requests
param = {"name": "ad", "class": "hogwarts"}
url = "https://httpbin.ceshiren.com/get"
r = requests.get(url, params = param)
print(r.json())

请求发送raw

payload = {'some': 'data'}
r = requests.post(url, data=json.dumps(payload))

发送json

payload = {'some': 'data'}
r = requests.post(url, json=payload)

发送xml

payload = "<xml><a>1</a></xml>"
headers = {'Content-Type': 'application/xml'}
r = requests.post(url, data=payload, headers=headers)

xml的构造

from xml.etree import ElementTree as ETdef test_xml():a = ET.Element("a")b = ET.SubElement(a, "b")c = ET.SubElement(b, "c")c.text = "c text"c.set("c1", "1")old = ET.tostring(a)c2 = a.find('b/c')c2.set('c1', "3")
请求头含义
属性含义
Content-Type内容类型
host发出请求的页面所在的域
User-Agent浏览器的用户代理
响应结果类型
属性含义
r.status_code响应码
r.url编码之后的请求的 URL
r.content字节流形式的响应
r.raw原始响应内容
r.json()JSON 解码后的响应内容
断言
  1. assert
  2. 复杂断言
    1. JSONPath:解析 JSON 数据的表达语言,与 XPath 表达式语言类似。
    2. JSONSchema
    3. 自行编写解析算法
XPathJSONPath描述
/$根节点
.@现行节点
/. or []取子节点
//不管位置,选择所有符合条件的条件
**匹配所有元素节点
[][]迭代器标示(可以在里面做简单的迭代操作,如数组下标,根据内容选值等)
[,]
[]?()支持过滤操作
n/a()支持表达式计算
()n/a分组,JsonPath 不支持

示例

1. 从根节点开始的任意层级寻找 posts
"$..posts"
$ 根节点
… 任意层级
posts posts 节点2. 从根节点的孩子节点寻找 tags
"$.tags"
3. [?(@.username == ‘xxx’] 寻找 username 为 xxx 的数据
$..posts[?(@.username == 'xxx']
4. and 表示并且
$..posts[?(@.username == 'xxx' and @.created_at == '2020-09-27')]import requests
from jsonpath import jsonpathdef test_json_path():r = requests.get("https://ceshiren.com/categories.json")name_list = jsonpath(r.json(), '$.category_list.categories[0].name')assert name_list[0] == '提问区'name_list = jsonpath(r.json(), "$..name")assert '提问区' in name_list

XML 断言

from requests_xml import XMLSessionsession = XMLSession()r = session.get('https://www.nasa.gov/rss/dyn/lg_image_of_the_day.rss')r.xml.links

XPath 断言

from requests_xml import XMLSessionsession = XMLSession()r = session.get('https://www.nasa.gov/rss/dyn/lg_image_of_the_day.rss')r.xml.linksitem = r.xml.xpath('//item', first=True)print(item.text)

xml解析

import xml.etree.ElementTree as ETroot = ET.fromstring(countrydata)root.findall(".")root.findall("./country/neighbor")root.findall(".//year/..[@name='Singapore']")root.findall(".//*[@name='Singapore']/year")

代理配置

import requestsproxies = {'http': 'http://10.10.1.10:3128','https': 'http://10.10.1.10:1080',
}requests.get('http://example.org', proxies=proxies)

cookie处理

s = requests.Session()r = s.get('https://httpbin.org/cookies', cookies={'from-my': 'browser'})
print(r.text)
# '{"cookies": {"from-my": "browser"}}'r = s.get('https://httpbin.org/cookies')
print(r.text)
# '{"cookies": {}}'

form请求

import requests
def test_form():payload = {'key1': 'value1', 'key2': 'value2'}r = requests.post("http://127.0.0.1:7777/post", data=payload)

超时处理

requests.get('https://github.com/', timeout=0.001)

文件上传测试

url = 'https://httpbin.org/post'
files = {'file': open('report.xls', 'rb')}r = requests.post(url, files=files)

面试 | 今日头条测试开发岗位面试题目回顾_霍格沃兹测试开发学社的博客-CSDN博客 9

这篇关于【03】霍格沃兹测试开发学社技术学习笔记之服务端接口测试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/406834

相关文章

SpringBoot开发中十大常见陷阱深度解析与避坑指南

《SpringBoot开发中十大常见陷阱深度解析与避坑指南》在SpringBoot的开发过程中,即使是经验丰富的开发者也难免会遇到各种棘手的问题,本文将针对SpringBoot开发中十大常见的“坑... 目录引言一、配置总出错?是不是同时用了.properties和.yml?二、换个位置配置就失效?搞清楚加

使用Python进行GRPC和Dubbo协议的高级测试

《使用Python进行GRPC和Dubbo协议的高级测试》GRPC(GoogleRemoteProcedureCall)是一种高性能、开源的远程过程调用(RPC)框架,Dubbo是一种高性能的分布式服... 目录01 GRPC测试安装gRPC编写.proto文件实现服务02 Dubbo测试1. 安装Dubb

Qt如何实现文本编辑器光标高亮技术

《Qt如何实现文本编辑器光标高亮技术》这篇文章主要为大家详细介绍了Qt如何实现文本编辑器光标高亮技术,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以了解下... 目录实现代码函数作用概述代码详解 + 注释使用 QTextEdit 的高亮技术(重点)总结用到的关键技术点应用场景举例示例优化建议

SpringBoot+Redis防止接口重复提交问题

《SpringBoot+Redis防止接口重复提交问题》:本文主要介绍SpringBoot+Redis防止接口重复提交问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录前言实现思路代码示例测试总结前言在项目的使用使用过程中,经常会出现某些操作在短时间内频繁提交。例

Python的端到端测试框架SeleniumBase使用解读

《Python的端到端测试框架SeleniumBase使用解读》:本文主要介绍Python的端到端测试框架SeleniumBase使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录SeleniumBase详细介绍及用法指南什么是 SeleniumBase?SeleniumBase

Python中对FFmpeg封装开发库FFmpy详解

《Python中对FFmpeg封装开发库FFmpy详解》:本文主要介绍Python中对FFmpeg封装开发库FFmpy,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、FFmpy简介与安装1.1 FFmpy概述1.2 安装方法二、FFmpy核心类与方法2.1 FF

基于Python开发Windows屏幕控制工具

《基于Python开发Windows屏幕控制工具》在数字化办公时代,屏幕管理已成为提升工作效率和保护眼睛健康的重要环节,本文将分享一个基于Python和PySide6开发的Windows屏幕控制工具,... 目录概述功能亮点界面展示实现步骤详解1. 环境准备2. 亮度控制模块3. 息屏功能实现4. 息屏时间

springboot下载接口限速功能实现

《springboot下载接口限速功能实现》通过Redis统计并发数动态调整每个用户带宽,核心逻辑为每秒读取并发送限定数据量,防止单用户占用过多资源,确保整体下载均衡且高效,本文给大家介绍spring... 目录 一、整体目标 二、涉及的主要类/方法✅ 三、核心流程图解(简化) 四、关键代码详解1️⃣ 设置

spring中的ImportSelector接口示例详解

《spring中的ImportSelector接口示例详解》Spring的ImportSelector接口用于动态选择配置类,实现条件化和模块化配置,关键方法selectImports根据注解信息返回... 目录一、核心作用二、关键方法三、扩展功能四、使用示例五、工作原理六、应用场景七、自定义实现Impor

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部