【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

相关文章

Java function函数式接口的使用方法与实例

《Javafunction函数式接口的使用方法与实例》:本文主要介绍Javafunction函数式接口的使用方法与实例,函数式接口如一支未完成的诗篇,用Lambda表达式作韵脚,将代码的机械美感... 目录引言-当代码遇见诗性一、函数式接口的生物学解构1.1 函数式接口的基因密码1.2 六大核心接口的形态学

使用DeepSeek API 结合VSCode提升开发效率

《使用DeepSeekAPI结合VSCode提升开发效率》:本文主要介绍DeepSeekAPI与VisualStudioCode(VSCode)结合使用,以提升软件开发效率,具有一定的参考价值... 目录引言准备工作安装必要的 VSCode 扩展配置 DeepSeek API1. 创建 API 请求文件2.

详解Java如何向http/https接口发出请求

《详解Java如何向http/https接口发出请求》这篇文章主要为大家详细介绍了Java如何实现向http/https接口发出请求,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 用Java发送web请求所用到的包都在java.net下,在具体使用时可以用如下代码,你可以把它封装成一

基于Python开发电脑定时关机工具

《基于Python开发电脑定时关机工具》这篇文章主要为大家详细介绍了如何基于Python开发一个电脑定时关机工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 简介2. 运行效果3. 相关源码1. 简介这个程序就像一个“忠实的管家”,帮你按时关掉电脑,而且全程不需要你多做

Java后端接口中提取请求头中的Cookie和Token的方法

《Java后端接口中提取请求头中的Cookie和Token的方法》在现代Web开发中,HTTP请求头(Header)是客户端与服务器之间传递信息的重要方式之一,本文将详细介绍如何在Java后端(以Sp... 目录引言1. 背景1.1 什么是 HTTP 请求头?1.2 为什么需要提取请求头?2. 使用 Spr

Java中的Opencv简介与开发环境部署方法

《Java中的Opencv简介与开发环境部署方法》OpenCV是一个开源的计算机视觉和图像处理库,提供了丰富的图像处理算法和工具,它支持多种图像处理和计算机视觉算法,可以用于物体识别与跟踪、图像分割与... 目录1.Opencv简介Opencv的应用2.Java使用OpenCV进行图像操作opencv安装j

基于Qt开发一个简单的OFD阅读器

《基于Qt开发一个简单的OFD阅读器》这篇文章主要为大家详细介绍了如何使用Qt框架开发一个功能强大且性能优异的OFD阅读器,文中的示例代码讲解详细,有需要的小伙伴可以参考一下... 目录摘要引言一、OFD文件格式解析二、文档结构解析三、页面渲染四、用户交互五、性能优化六、示例代码七、未来发展方向八、结论摘要

如何测试计算机的内存是否存在问题? 判断电脑内存故障的多种方法

《如何测试计算机的内存是否存在问题?判断电脑内存故障的多种方法》内存是电脑中非常重要的组件之一,如果内存出现故障,可能会导致电脑出现各种问题,如蓝屏、死机、程序崩溃等,如何判断内存是否出现故障呢?下... 如果你的电脑是崩溃、冻结还是不稳定,那么它的内存可能有问题。要进行检查,你可以使用Windows 11

在 VSCode 中配置 C++ 开发环境的详细教程

《在VSCode中配置C++开发环境的详细教程》本文详细介绍了如何在VisualStudioCode(VSCode)中配置C++开发环境,包括安装必要的工具、配置编译器、设置调试环境等步骤,通... 目录如何在 VSCode 中配置 C++ 开发环境:详细教程1. 什么是 VSCode?2. 安装 VSCo

SpringBoot实现websocket服务端及客户端的详细过程

《SpringBoot实现websocket服务端及客户端的详细过程》文章介绍了WebSocket通信过程、服务端和客户端的实现,以及可能遇到的问题及解决方案,感兴趣的朋友一起看看吧... 目录一、WebSocket通信过程二、服务端实现1.pom文件添加依赖2.启用Springboot对WebSocket