request发送http请求

今天正式开始为大家介绍接口自动化,相信很多做测试的朋友,都用过一些工具,比如jmeter,loadrunner,postman等等,所以今天先给那些基础不太好的同学,先讲讲postman如何来测接口以及如何用pthon代码的方式来发送http请求

首先,我们在做接口测试之前,一般会拿到开发人员那边的接口文档,没有接口文档是很难快速高效率的去进行测试工作的这部分接口测试,所以,得提前准备好或者拿到一份接口测试

接下来,小编我以注册和登录为例,附上截图给大家看看,请提前下载安装好postman工具

一、postman的基本使用

请求头信息截图如下:

如果你不想一个一个的手动写,可以有一种简单的方法,

看,自动生成了

这里有几个注意点要说明:

1.一定结合开发人员给你的接口文档结合起来进行

2.请求头,有的没有,有的有,看接口文档

3.请求方式要看清是post还是get方式

二、requests发送http请求

这里有的问题会问,做接口测试,只能用工具吗?可不可以写代码的方式来做接口测试?当然可以,python代码还是很强大的

在写代码前,先安装requests插件,安装命令:pip install requests

然后,继续看下面的内容,以登录接口为例:

python 复制代码
import requests # 登录的接口地址 url = "http://api.lemonban.com/futureloan/member/login" # 登录的参数 params = { "mobile_phone": "15879563287", "pwd": "lemonban" } # 请求头 headers = { "X-Lemonban-Media-Type": "lemonban.v2", } # 发送一个登录的请求 # 请求类型为Content-Type:application/json,参数就应该使用json去传递 response = requests.post(url=url, json=params, headers=headers) print(response) # 200,请求成功 # 获取接口返回的数据 print(response.text)

三、requests处理各种请求类型的参数

常见的接口请求参数类型:

1、查询字符串参数:

常用于get请求 (其他的请求方法用的少),参数会直接拼接在url地址后面

requests发送请求,传递查询字符串参数,要使用params去传递 params=params

2、json类型的参数:

请求参数类型为Content-Type:application/json,

requests发送请求,传递json参数,就应该使用json去传递 json=params

3、表单类型的参数

请求参数类型:content-type: application/x-www-form-urlencoded

requests发送请求,传递表单参数,就应该使用data去传递 data=params

4、文件上传:

请求参数类型:content-type: multipart/form-data

文件参数要使用files进行传递

文件参数的组装:

{"参数名": ("文件名", open以rb模式打开文件, "文件类型")}

[("参数名", ("文件名", open以rb模式打开文件, "文件类型"))]

python 复制代码
import requests # --------------------查询字符串参数传递----------------------------- # 查询字符串参数的传递: url = "http://api.lemonban.com/futureloan/loans" # 请求参数 params = { "pageIndex": 1, "pageSize": 20 } # 请求头 headers = { "X-Lemonban-Media-Type": "lemonban.v2" } response1 = requests.get(url=url, params=params, headers=headers) print(response1.text) # ----------------------json格式的参数传递------------------------------ # 注册的接口地址 url = "http://api.lemonban.com/futureloan/member/register" # 参数 params = { "mobile_phone": "15879562223", "pwd": "lemonban" } # 请求头 headers = { "X-Lemonban-Media-Type": "lemonban.v2" } response2 = requests.post(url=url, json=params, headers=headers) print(response2.text) # ------------------------表单类型参数的传递---------------------------------- # 接口地址 url = "https://www.ketangpai.com/UserApi/login" # 参数 params = { "email": "24782578257", "password": "1426", "remember": 0 } response3 = requests.post(url=url, data=params) print(response3.json()) # -----------------------文件上传--------------------------------- # 上传文件的接口地址(这是授课老师本地的,我们无法访问) url = "http://127.0.0.1:5000/upload" # 请求的参数 params = { "nickname": "1122", "age": 18, "sex": "男" } file = { "pic": ("jiayouya.gif", open("jiayouya.gif", "rb"), "image/gif") } # response4 = requests.post(url=url, data=params, files=file) print(response4.json())

四、请求响应数据的提取方式

响应对象response:

一、http响应码:response.status_code

二、返回的数据提取:

1、text属性(str):获取的是原生的json字符串 (用的不多)

2、content属性(bytes):可以使用decode指定编码转换为字符串 (用的不多)

3、json()方法(dict):获取到的是json转换的字典/列表 (工作中常用,需重点掌握!!!)

三、json类型的数据和 python中数据的对比

json     python

{}: 对象 字典

[]: 数组 列表

空 null None

布尔 false False

true True

python 复制代码
import requests # 登录的接口地址 url = "http://api.lemonban.com/futureloan/member/login" # 登录的参数 params = { "mobile_phone": "15879563287", "pwd": "lemonban11" } # 请求头 headers = { "X-Lemonban-Media-Type": "lemonban.v2", } # 发送一个登录的请求 # 请求类型为Content-Type:application/json,参数就应该使用json去传递 response = requests.post(url=url, json=params, headers=headers) # 获取接口返回的数据 print(response.text) print(response.json())

五、jsonpath和json数据

json提取数据

首先安装jsonpath 安装命令:pip install jsonpath

然后,这里我给出一组数据,如下:这是登录之后返回的数据

python 复制代码
{'code': 0, 'msg': 'OK', 'data':{ 'id': 2096225, 'leave_amount': 0.0, 'mobile_phone': '15879563287', 'reg_name': '小柠檬', 'reg_time': '2020-08-21 11:36:56.0', 'type': 1, 'token_info': { 'token_type': 'Bearer', 'expires_in': '2020-08-21 18:11:31', 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJtZW1iZXJfaWQiOjIwOTYyMjUsImV4cCI6MTU5ODAwNDY5MX0.dvhKZs67w2jWX9zjqzsQ_7xjE3ggcfuEjtl6HOkmSb0qWkqp8pOiMYzJ6LDSKfGj_6D-1SnxDqd4Ew2fY8oziw' } }, 'copyright': 'Copyright 柠檬班 © 2017-2020 湖南省零檬信息技术有限公司 All Rights Reserved' }
python 复制代码
from jsonpath import jsonpath import requests # 登录的接口地址 url = "http://api.lemonban.com/futureloan/member/login" # 登录的参数 params = { "mobile_phone": "15879563287", "pwd": "lemonban" } # 请求头 headers = { "X-Lemonban-Media-Type": "lemonban.v2", } # 发送一个登录的请求 # 请求类型为Content-Type:application/json,参数就应该使用json去传递 response = requests.post(url=url, json=params, headers=headers) # 获取接口返回的数据 res = response.json() # 通过字典键值对的方式获取 # token = res["data"]["token_info"]["token"] # print(token) # 通过jsonpath提取 token = jsonpath(res, "$..token") print(token)

再给大家详细来张图:

因为,jsonpath提取数据的语法基本如下:

如果Json数据中还存在列表,想获取列表类型的数据信息,怎么获取?

比如:我给出一个json类型数据,看截图:

python 复制代码
import json from jsonpath import jsonpath # 读取json文件中的数据,转换为python中的字典 with open("data.json", "r", encoding="utf-8") as f: res = json.load(f) res = jsonpath(res, "$.toplists[1].id") print(res)

因此,总结这部分json获取数据的内容,有以下这么几点:

1.可直接通过美元符号$ 举例 $..code

2.若需要找列表中的信息, 举例 $.toplists[1]

相关推荐
秋夫人2 分钟前
http cache-control
网络·网络协议·http
叶北辰CHINA28 分钟前
nginx反向代理,负载均衡,HTTP配置简述(说人话)
linux·运维·nginx·http·云原生·https·负载均衡
小白学大数据2 小时前
User-Agent在WebMagic爬虫中的重要性
开发语言·爬虫·http
limengshi1383925 小时前
通信工程学习:什么是RIP路由信息协议
网络·网络协议·学习·智能路由器·信息与通信
GodK7775 小时前
HTTPS 的加密流程
网络协议·http·https
limengshi1383929 小时前
通信工程学习:什么是TFTP简单文件传输协议
网络·网络协议·学习·信息与通信
麻辣韭菜10 小时前
网络基础 【HTTP】
网络·c++·http
#欲速则不达#18 小时前
高级I/O
c++·网络协议
中草药z19 小时前
【JavaEE】http/https 超级详解
网络·笔记·网络协议·学习·http·https·计网
物有本木20 小时前
httpsok-v1.17.0-SSL通配符证书自动续签
网络·网络协议·ssl