【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

相关文章

VSCode开发中有哪些好用的插件和快捷键

《VSCode开发中有哪些好用的插件和快捷键》作为全球最受欢迎的编程工具,VSCode的快捷键体系是提升开发效率的核心密码,:本文主要介绍VSCode开发中有哪些好用的插件和快捷键的相关资料,文中... 目录前言1、vscode插件1.1 Live-server1.2 Auto Rename Tag1.3

Agent开发核心技术解析以及现代Agent架构设计

《Agent开发核心技术解析以及现代Agent架构设计》在人工智能领域,Agent并非一个全新的概念,但在大模型时代,它被赋予了全新的生命力,简单来说,Agent是一个能够自主感知环境、理解任务、制定... 目录一、回归本源:到底什么是Agent?二、核心链路拆解:Agent的"大脑"与"四肢"1. 规划模

Python+wxPython开发一个文件属性比对工具

《Python+wxPython开发一个文件属性比对工具》在日常的文件管理工作中,我们经常会遇到同一个文件存在多个版本,或者需要验证备份文件与源文件是否一致,下面我们就来看看如何使用wxPython模... 目录引言项目背景与需求应用场景核心需求运行结果技术选型程序设计界面布局核心功能模块关键代码解析文件大

C++多线程开发环境配置方法

《C++多线程开发环境配置方法》文章详细介绍了如何在Windows上安装MinGW-w64和VSCode,并配置环境变量和编译任务,使用VSCode创建一个C++多线程测试项目,并通过配置tasks.... 目录下载安装 MinGW-w64下载安装VS code创建测试项目配置编译任务创建 tasks.js

requests处理token鉴权接口和jsonpath使用方式

《requests处理token鉴权接口和jsonpath使用方式》文章介绍了如何使用requests库进行token鉴权接口的处理,包括登录提取token并保存,还详述了如何使用jsonpath表达... 目录requests处理token鉴权接口和jsonpath使用json数据提取工具总结reques

CPython与PyPy解释器架构的性能测试结果对比

《CPython与PyPy解释器架构的性能测试结果对比》Python解释器的选择对应用程序性能有着决定性影响,CPython以其稳定性和丰富的生态系统著称;而PyPy作为基于JIT(即时编译)技术的替... 目录引言python解释器架构概述CPython架构解析PyPy架构解析架构对比可视化性能基准测试测

python协程实现高并发的技术详解

《python协程实现高并发的技术详解》协程是实现高并发的一种非常高效的方式,特别适合处理大量I/O操作的场景,本文我们将简单介绍python协程实现高并发的相关方法,需要的小伙伴可以了解下... 目录核心概念与简单示例高并发实践:网络请求协程如何实现高并发:核心技术协作式多任务与事件循环非阻塞I/O与连接

python调用dubbo接口的实现步骤

《python调用dubbo接口的实现步骤》本文主要介绍了python调用dubbo接口的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编... 目录 ​​其他实现方式与注意事项​​ ​​高级技巧与集成​​用 python 提供 Dubbo 接口

Java中接口和抽象类的异同以及具体的使用场景

《Java中接口和抽象类的异同以及具体的使用场景》文章主要介绍了Java中接口(Interface)和抽象类(AbstractClass)的区别和联系,包括相同点和不同点,以及它们在实际开发中的具体使... 目录一、接口和抽象类的 “相同点”二、接口和抽象类的 “核心区别”关键区别详解(避免踩坑)三、具体使

一文详解Python如何开发游戏

《一文详解Python如何开发游戏》Python是一种非常流行的编程语言,也可以用来开发游戏模组,:本文主要介绍Python如何开发游戏的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、python简介二、Python 开发 2D 游戏的优劣势优势缺点三、Python 开发 3D