移动互联网在财务会计领域的应用,青岛网络优化公司,八点品牌设计公司招聘,电子销售网站报表模块如何做Requests库是在接口测试中被广泛运用的库#xff0c;包括模拟请求的下发#xff0c;请求相关配置和响应结果的获取#xff0c;核心主体都是通过request库完成。在接口测试中使用非常频繁。
一、Requests库环境搭建
接口测试的核心从模拟请求开始。在Python中#xff0c;通…Requests库是在接口测试中被广泛运用的库包括模拟请求的下发请求相关配置和响应结果的获取核心主体都是通过request库完成。在接口测试中使用非常频繁。
一、Requests库环境搭建
接口测试的核心从模拟请求开始。在Python中通过requests库实现请求的模拟。 环境部署pip install requests Requests库的基本应用 1.模拟请求 定义url定义header定义body定义请求相关数据内容2.管理cookie 可以实现cookie的创建修改发送3. 获取响应 所有响应相关内容都可以获取 二、Requests库接口测试的基本实现
2.1 post方法源码解析 有些接口是post方法进行测试之前先看一下post请求的源码 url : 就是要填写即将请求接口的url
param data : 填入的参数可以是元组字典和文件等
param json : 会将数据传入body中进行发送
return 会返回一个response对象所以需要有result 来进行接收 2.2 get方法源码解析
get方法和post 方法类似最大的区别在于param 参数支持字典元组这些类型但是不支持文件。post方法中的body参数是支持文件类型的。 2.3接口测试的基本实现 接口测试就是三个步骤 1. 准备测试数据 2. 模拟请求下发 3. 解析响应并校验
假如我们要对登录接口进行验证接口提供了url,请求方式请求参数以及响应结果 以下代码是对登录接口的简单测试
import requestsurl http://fecshop.appapi.fancyecoemmerce.com/v1/account/login
#定义接口的url
#设置请求参数
data {username : 123,password : admin
}
#2.进行请求的下发
res requests.post(url url,data data)#发送一个post请求返回response对象
#3.对响应结果进行解析和处理
print(res.text)#响应的文本信息
运行一下可以得到接口定义的返回值access-token、status、code。这里报错401主要是由于用户端传入参数有误。只需要修改对应参数即可。 2.4获取请求和响应信息
Requests库默认调用HTTP1.1的版本进行请求的下发所以所有的请求方法都包含在内。
响应的 res 中返回的是一个respond对象可以通过操作对象获取相关信息。
获取文本信息 res.text text表示响应的文本信息str数据类型获取res的json格式 res.json 生成字典格式的json对象获取响应头res.headers 可以获取到set-cookie 获取cookie信息res.cookies ,得到RequestsCookiesJar对象对应的信息在后面
通过遍历获取cookie通过cookie.name 和cookie.value获取cookie对应的名称和值。
cookies属性获取requestsCookieJar对象要获取完整的cookie信息需要用循环来获取
print(res.cookies)
for cookie in res.cookies:print(cookie.name)print(cookie.value)获取http状态码 res.status_code获取请求头 res.request.headers 获取请求头当我们在调用接口的时候如果接口对请求头有限制则需要自行在请求之前配置好请求headers
对于F12看到的请求是真实发送的请求控制台输出的请求是代码模拟发送的请求。
通过代码发起请求和在浏览器发起请求区别在于user-Agent代表发送请求时的环境
类似于Webdriver 启动的浏览器是零缓存的浏览器所以我们登陆操作的时候需要进行验证码的操作。为了避免这种安全机制的产生所以我们在selenium 中我们要配置chrome options 加载缓存。
接口测试也有安全机制。直接用request 发送请求会失败因为检测到请求和在浏览器发起请求区别在于user-Agent是不正常的用户。所以我们要设置headers 将user-Agent改成正常的用户情况。
# 设置请求头参数都是基于kv对
headers {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36
} 2.5响应结果的断言 想对响应结果做断言操作需要先把结果拿出来。判断响应结果的关键内容是否符合预期。对接口的断言是断言respond的body。 接口测试的断言只需要对响应结果或者是响应头进行断言处理即可。而且断言的时候只需要考虑针对性的某一组数据内容即可
# 进行响应结果的断言
assert 200 res.json()[code], 登录失败
assert 200 res.status_code
# 状态码断言只能做辅助手段。所以没有必要的情况下可以不用写。 2.6接口关联 比如我们想要验证获取多语言接口但是需要传入的参数正好是登录接口响应结果得到的access-token就会涉及到接口关联。
我们需要先获取登录接口的结果得到access-token,将access-token设置到第二个接口的headers
中就可以实现接口关联。
# 登录接口测试的基本实现
# 1. 模拟请求的数据内容
url http://apihcc.fecmall.com/v1/account/login # 定义接口的url
# 设置请求参数
data {username: admin,password: admin123
}
# 设置请求头参数都是基于kv对
headers {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36
}
# 2. 进行请求的下发获取登录接口的响应结果
res requests.post(urlurl, jsondata, headersheaders) #第二个接口获取请求头当你在调用接口的时候如果接口对请求头有限制则需要自行在请求之前配置好请求headers
res.request.headers
# 生成第二个接口的请求下发
url1 http://apihcc.fecmall.com/v1/languagesheaders {access-token: res.json()[access-token]
}r requests.get(urlurl1, headersheaders)
print(r.text)查看结果 接口测试的提前介入可以很好的定位到后端接口之间的问题提高整个开发效率。