【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中通过自定义注解、AOP拦截和配置文件实现不同接口上传文件大小限制的方法,强调需设置全局阈值远大于... 目录一  springboot实现不同接口指定文件大小1.1 思路说明1.2 工程启动说明二 具体实施2

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

Python实战之SEO优化自动化工具开发指南

《Python实战之SEO优化自动化工具开发指南》在数字化营销时代,搜索引擎优化(SEO)已成为网站获取流量的重要手段,本文将带您使用Python开发一套完整的SEO自动化工具,需要的可以了解下... 目录前言项目概述技术栈选择核心模块实现1. 关键词研究模块2. 网站技术seo检测模块3. 内容优化分析模

基于Java开发一个极简版敏感词检测工具

《基于Java开发一个极简版敏感词检测工具》这篇文章主要为大家详细介绍了如何基于Java开发一个极简版敏感词检测工具,文中的示例代码简洁易懂,感兴趣的小伙伴可以跟随小编一起学习一下... 目录你是否还在为敏感词检测头疼一、极简版Java敏感词检测工具的3大核心优势1.1 优势1:DFA算法驱动,效率提升10

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

Python中高级文本模式匹配与查找技术指南

《Python中高级文本模式匹配与查找技术指南》文本处理是编程世界的永恒主题,而模式匹配则是文本处理的基石,本文将深度剖析PythonCookbook中的核心匹配技术,并结合实际工程案例展示其应用,希... 目录引言一、基础工具:字符串方法与序列匹配二、正则表达式:模式匹配的瑞士军刀2.1 re模块核心AP

Python学习笔记之getattr和hasattr用法示例详解

《Python学习笔记之getattr和hasattr用法示例详解》在Python中,hasattr()、getattr()和setattr()是一组内置函数,用于对对象的属性进行操作和查询,这篇文章... 目录1.getattr用法详解1.1 基本作用1.2 示例1.3 原理2.hasattr用法详解2.

Python开发简易网络服务器的示例详解(新手入门)

《Python开发简易网络服务器的示例详解(新手入门)》网络服务器是互联网基础设施的核心组件,它本质上是一个持续运行的程序,负责监听特定端口,本文将使用Python开发一个简单的网络服务器,感兴趣的小... 目录网络服务器基础概念python内置服务器模块1. HTTP服务器模块2. Socket服务器模块

Java 与 LibreOffice 集成开发指南(环境搭建及代码示例)

《Java与LibreOffice集成开发指南(环境搭建及代码示例)》本文介绍Java与LibreOffice的集成方法,涵盖环境配置、API调用、文档转换、UNO桥接及REST接口等技术,提供... 目录1. 引言2. 环境搭建2.1 安装 LibreOffice2.2 配置 Java 开发环境2.3 配