小公司做网站推广好不好,正规免费网站建设公司,什么是ui界面,网站开发运用到的相关技术requests 接口自动化测试requests库基本实现请求-GET基本实现请求-POST基本实现请求-补充 sessionCookie和Session案例params 接口自动化测试
概念程序驱动代替人工驱动去实现接口测试
实现方式
测试工具(jmeter, postman, …)编码工具(python, java, …)
比较
工具 优点:… requests 接口自动化测试requests库基本实现请求-GET基本实现请求-POST基本实现请求-补充 sessionCookie和Session案例params 接口自动化测试
概念程序驱动代替人工驱动去实现接口测试
实现方式
测试工具(jmeter, postman, …)编码工具(python, java, …)
比较
工具 优点: 1.不需要编程基础 2.功能都是封装好的, 直接调用缺点: 不灵活 编码 优点: 灵活缺点: 1.需要编程基础 2.功能需要自实现, 效率偏低
requests库
概念 requests 库是使用 python 编写的, 可以调用该库的函数直接向服务器发送 http 请求, 并接收响应
角色定位 jmeter 中的 http 请求
安装
# 命令行输入命令并回车
pip install requests需要有网络 校验
# 命令行输入命令并回车
pip list基本实现请求-GET
需求: 编写 python 代码, 访问案例的查询接口 (/sa/listarea)流程: 三要素1.根据 url 定位接口资源2.提交测试数据3.发送请求, 接收并处理响应结果# 导包
import requests
# 一行代码搞定
response requests.get(http://localhost:8081/sa/listarea)
# 打印结果
print(状态码:, response.status_code)
print(响应体:, response.text)基本实现请求-POST 需求: 编写 python 代码, 访问案例的新增接口 (/sa/addarea)# 导包
import requests
# 三要素
data {areaName: 中发白, priority: 123}
response requests.post(http://localhost:8081/sa/addarea, datadata)
print(状态码:, response.status_code)
print(响应体:, response.text)基本实现请求-PUT
需求: 编写 python 代码, 访问案例的修改接口 (/sa/modifyarea)# 导包
import requests
# 三要素
# data {areaName: 中发白, priority: 123}
myJson {areaId: 40,areaName: 东南西北中发白,priority: 888
}
response requests.put(http://localhost:8081/sa/modifyarea, jsonmyJson)
print(状态码:, response.status_code)
print(响应体:, response.text)基本实现请求-DELETE
需求: 编写 python 代码, 访问案例的删除接口 (/sa/removearea)# 导包
import requests
# 三要素
response requests.delete(http://localhost:8081/sa/removearea, params{areaId: 40})
print(状态码:, response.status_code)
print(响应体:, response.text)基本实现请求-补充
四种操作的代码结构基本一致
区别 函数名不同 提交测试数据的参数名不同 get/delete 使用 params post/put 使用 data/json data 提交键值对格式数据 json 提交JSON格式数据
为什么
get/delete 请求格式: 提交的数据在请求行post/put 请求格式: 提交的数据在请求体
基本实现响应-response 响应由行头体三部分组成, 解析也是围绕行头体解析 需求: 响应由行头体三部分组成, 需要用requests 相关实现解析响应中的行头体import requests
response requests.get(http://www.baidu.com)
# 行解析
print(URL:, response.url)
print(状态码:, response.status_code)
print(-*80)
# 头获取
print(获取所有响应头:, response.headers)
print(获取所有cookie:, response.cookies)
print(获取所有编码集:, response.encoding)
print(-*80)
# 体获取
print(以文本的方式获取响应体:, response.text) # 服务器传过来的是文本信息, 如 html 文档
# print(以二进制的方式获取响应体:, response.content) # 服务器传过来的是图片/视频/音频等非文本数据
# print(以JSON的方式获取响应体:, response.json()) # 服务器传过来的是json格式数据, 调用该方法以json语法解析数据登录实现思路cookie
# 核心知识点: 关联
# 获取登录接口响应的 cookie, 提取出来作为查询订单接口要提交的参数
import requests
# 访问接口1: 访问登录接口
response1 requests.post(login接口, data{username: xxx, password: yyy})
# 获取 cookie, 再获取 cookie 中的 xxID 形式类似于{xxID: zzz}
id response1.cookies.get(xxID)
# 访问接口2: 订单查询接口
requests.get(查询订单接口, cookies{xxID: id})session
import requests
# 获取 session 对象
mySession requests.Session()
# 请求1: 使用 session 登录
#requests.post(...)
response1 mySession.post(login接口, data{username: xxx, password: yyy})
# 请求2: 使用 session 获取订单
response2 mySession.get(查询订单接口)Cookie和Session
都是用于在Web应用程序中跟踪用户状态的机制但它们之间有一些关键区别。 Cookie
1.定义Cookie是在用户计算机上存储的小型文本文件由服务器发送到用户的浏览器并保存在浏览器的文件系统中。 2.用途主要用于在客户端用户的浏览器和服务器之间传递信息以跟踪和识别用户。通常Cookie包含有关用户的会话信息、偏好设置或其他数据。 3.特点
a.被存储在用户的本地计算机上因此可以在不同的页面和会话之间持久存在。 b.可以设置过期时间可以是会话级别的浏览器关闭时删除或持久性的在指定的时间后过期。 c.由于存储在客户端Cookie可以在用户访问网站时发送给服务器从而识别用户并提供个性化的体验。
Session
1.定义Session是在服务器上创建的唯一会话标识符用于跟踪用户在网站上的活动状态。 2.用途主要用于在服务器端存储用户的状态信息以便在用户访问网站的不同页面时保持用户的状态和数据。 3.特点
a.存储在服务器上通常以内存中的数据结构或数据库中的条目的形式存在。 b.每个会话都有一个唯一的会话标识符Session ID通过该标识符可以在用户请求之间识别用户。 c.由于存储在服务器上Session数据对客户端不可见因此相对于Cookie更安全。 d.通常Session会在用户关闭浏览器或一段时间后过期具体取决于服务器的配置。
总结
1.Cookie存储在客户端而Session存储在服务器端。 2.Cookie通常用于识别和跟踪用户而Session用于在用户访问期间保持状态和数据。 3.Cookie的生命周期由客户端控制而Session的生命周期由服务器控制。 4.Cookie对客户端可见可以在不同的页面和会话之间持久存在而Session对客户端不可见只能通SessionID来识别用户。 5.Cookie通常用于存储较小的数据而Session可以存储更大量的数据。
案例
需求
使用 requests库调用 tpshop登录功能的相关接口, 完成登录操作, 登录成功后获取 “我的订单” 页面(其实就是访问订单列表接口)
相关接口
1.获取验证码http://localhost/index.php?mHomecUseraverify GET(此接口返回验证码 和 cookie)
2.登录http://localhost/index.php?mHomecUserado_login POST参数: {username:xxxxx,password:yyyy,verify_code:zzzz},非 JSON 提交
3.我的订单http://localhost/Home/Order/order_list.html GETcookie
import requests
# 1.获取验证码, 并获得 cookie 中的 PHPSESSID
response1 requests.get(http://localhost/index.php?mHomecUseraverify)
print(response1.status_code)
print(response1.cookies)
id response1.cookies.get(PHPSESSID)
print(id)
print(-*80)
# 2.登录, 并提交cookie
data {username: 17150312012, password: 123456, verify_code: 8888}
cookie {PHPSESSID: id}
response2 requests.post(http://localhost/index.php?mHomecUserado_login, datadata, cookiescookie)
print(response2.status_code)
print(response2.text)
print(-*80)
# 3.获取订单, 需要再次提交 cookie
response3 requests.get(http://localhost/Home/Order/order_list.html, cookiescookie)
print(response3.status_code)
print(response3.text)session
import requests
# 创建 session 对象
session requests.Session()
# 1.获取验证码(隐式获取cookie)
response1 session.get(http://localhost/index.php?mHomecUseraverify)
print(response1.status_code)
print(-*80)
# 2.登录
data {username: 17150312012, password: 123456, verify_code: 8888}
response2 session.post(http://localhost/index.php?mHomecUserado_login, datadata)
print(response2.status_code)
print(response2.text)
print(-*80)
# 3.获取订单
response3 session.get(http://localhost/Home/Order/order_list.html)
print(response3.status_code)
print(response3.text)params
URL 参数在Web开发中“params” 可能指的是通过 URL 传递的参数。例如在以下URL中“params”部分指的是参数https://example.com/api?param1value1param2value2函数参数在编程中特别是在函数或方法中“params”通常是指传递给函数或方法的参数。例如在Python中定义一个函数时可以指定参数然后在调用函数时传递这些参数。HTTP 请求参数在Web开发中“params” 可能指的是在 HTTP 请求中发送的参数。这些参数可以是通过 URL 查询字符串传递的也可以是通过 POST 请求体发送的。数据库查询参数在数据库查询中“params” 通常指的是用于过滤、排序或限制结果的参数。这些参数可以是通过 SQL 查询语句的参数化查询传递的。