当前位置: 首页 > news >正文

接口测试---Requests

Requests

案例

  • 安装 pip install requests

  • 案例1 : requests访问百度

    # 导包
    import requests
    # 2.发送http请求
    resp=requests.get(url="http://www.baidu.com")
    # 打印结果
    print(resp.text)
    
  • 案例2 : 访问tpshop商城(提参数出来)

    # 导包
    import requests
    # 发送http请求
    resp=requests.get(url="https://hmshop-test.itheima.net/Home/Goods/search.html",params={"q":"iphone"})
    # 打印结果
    print(resp.text)
    
  • 案例3 : 登录ihrm系统--post请求

    import requests
    resp=requests.post(url="https://ihrm-java.itheima.net/api/sys/login",headers={"Content-Type":"application/json"},json={"mobile": "13800000002", "password": "929itheima.CN032@.20250910"})
    print(resp.json())
    
  • 案例4 : 修改员工信息并查看---put和get,删除同理

    # 导包
    import requests
    # 修改指定员工的姓名
    resp=requests.put(url="https://ihrm-java.itheima.net/api/sys/user/1066370498633486336",headers={"Authorization": "3b354697-1b3b-4f92-840f-d46d71ac5f6f"},json={"username":"aksha"})# 查看
    resp2=requests.get(url="https://ihrm-java.itheima.net/api/sys/user/1066370498633486336",headers={"Authorization": "3b354697-1b3b-4f92-840f-d46d71ac5f6f"})
    # 打印结果
    print(resp.json())
    print(resp2.json())
    

    image

  • 简介

    • cookie是针对http协议无状态的特征,设计的一种技术

    • cookie将数据保存在浏览器端,默认空间为4K(可以修改)

    • cookie中的数据,用户随意获取,没有安全性

    • 数据类型受浏览器限制

    • cookie中大多存放网络通信相关的不敏数据信息,提高访问速度

  • Cookie+Session的认证方式(10分重要)

image

  • 注意 : tpshop中,密码错误返回值为验证码错误
    image

  • 按照cookie+session认证方式修改:
    image

    # 导包
    import requests
    # 获取cookie值,点击刷新验证码(cookie中包含session_id)
    resp=requests.get(url="https://hmshop-test.itheima.net/index.php?  m=Home&c=User&a=verify&r=0.31241433102456484")
    # 获取cookie
    my_cookie=resp.cookies
    # 发送登录请求post(密码错误的url),携带获取到的cookie,获取响应结果
    resp2=requests.post(url="https://hmshop-test.itheima.net/index.php?m=Home&c=User&a=do_login&t=0.17791485152418463",data={"username":"13739717401","password":"1234567","verify_code":"8888"},cookies=my_cookie)
    # 打印输出
    print(resp2.json())
    
  • 成功登录
    image

  • 访问订单页面 : (cookie只需要获取一次,其它请求都需要继续带cookie发)

# 导包
import requests
# 获取cookie值,点击刷新验证码(cookie中包含session_id)
resp=requests.get(url="https://hmshop-test.itheima.net/index.php?m=Home&c=User&a=verify&r=0.31241433102456484")
# 获取cookie
my_cookie=resp.cookies
# 发送登录请求post(密码错误的url),携带获取到的cookie,获取响应结果
resp2=requests.post(url="https://hmshop-test.itheima.net/index.php?m=Home&c=User&a=do_login&t=0.17791485152418463",data={"username":"13739717401","password":"123456","verify_code":"8888"},cookies=my_cookie)
print(resp2.json())
# 发送请求访问我的订单页面
resp3=requests.get(url="https://hmshop-test.itheima.net/Home/Order/order_list.html",cookies=my_cookie)
# 打印输出
print("我的订单页面",resp3.text)

Session(会话)

  • 概念 : 从客户端登陆服务器开始,直到客户端退出登录,所产生的所有通信数据,保存在session中

    • session 将数据存储在服务器端

    • session使用服务器存储空间,没有大小限制

    • 数据类型受服务器主机影响,几乎支持所有数据类型

    • session中的数据,大多采用加密,转码存储,安全性高

Session自动管理Cookie : cookie中的数据,都由session提供的

  • 案例6 : 用session实现Tpshop商城登录,获取我的订单页面数据

实现步骤 :

  1. 创建session对象(实例) ----> my_session=requests.Session()

  2. session实例调get方法,发送获取验证码需求(不需要提取cookie,session自动能拿到) ----> my_session.get()

  3. 用同一个session实例调用post方法,发送登录请求(不需要携带cookie) ----> my_session.post()

  4. 使用用一个session实例,调用get方法,查看我的订单页面请求(不需要携带cookie) ----> my_session.get()

# 导包
import requests# 创建session实例
my_session=requests.Session()# 通过实例调用get方法发送获取验证码请求
resp=my_session.get(url="https://hmshop-test.itheima.net/index.php?m=Home&c=User&a=verify&r=0.31241433102456484")# 通过实例调用post方法实现登录请求
resp2=my_session.post(url="https://hmshop-test.itheima.net/index.php?m=Home&c=User&a=do_login&t=0.17791485152418463",data={"username":"13739717401","password":"123456","verify_code":"8888"})# 通过实例调用get方法实现我的订单页面请求
resp3=my_session.get(url="https://hmshop-test.itheima.net/Home/Order/order_list.html")print("登陆结果:",resp2.json())
print("我的订单页面:",resp3.text)

cookie与session区别!!!

  • 数据存储位置 :

    • cookie存储在浏览器端
    • session存储在服务器端
  • 安全性 : cookie安全性低,session高

    • cookie直接存储在浏览器,可以任意获取,没有安全性可言
    • session存储在服务器端,采用加密转码形式存储数据,安全性高
  • 数据类型 :

    • cookie在浏览器端,支持测试数据类型受浏览器限制
    • session在服务器端,服务器是主机,几乎支持所有的数据类型
  • 大小 :

    • cookie默认大小4KB
    • session直接使用服务器存储,没有限制.

响应resp

  • 每次收到的resp都是全部信息,怎么获取数据中的指定内容??

    • 使用resp.获取相应数据

      1. 获取URL : resp.url

      2. 获取响应状态码 : resp.status_code

      3. 获取Cookie : resp.cookies

      4. 获取响应头 : resp.headers

      5. 获取响应体 :

        • 文本格式 : resp.text
        • json格式 : resp.json(),如果出现JSONDecodeError错误提示,说明不能转换为json数据
  • 实例9 : 访问百度并获取相应数据

import requests
resp=requests.get(url="https://www.baidu.com")
# 获取url
print("获取url:",resp.url)
# 获取响应状态码
print("响应状态码:",resp.status_code)
# 获取Cookie
print("获取cookie:",resp.cookies)
# 获取响应头
print("获取响应头:",resp.headers)
# 获取 响应体
print("获取响应体:",resp.text)

PyTest框架--实现单元测试的框架

  • 安装 : pip install pytest

  • 查验 : pip list/pip show pytest

  • 定义类/测试方法

# 测试类名,建议以Test开头
class Testxxx(object):# 测试方法名:必须以test开头def test_xxx(self):pass
  • 执行测试用例
单文件执行(了解):方法1:终端命令 pytest -s xxx.py方法2:方法定义后,右键->运行,此方法,类定义后:右键->运行 所有方法方法3:导包import pytestif __name__=='__main__':pytest.main(['s','xxx.py'])多文件执行:[重点]1.直接在项目目录下,创建文件pytest.ini2.编写 pytest.ini文件[pytest]				固定内容adopts=-s				添加命令行参数 add optionstest paths=./xxx			.py测试用例文件,相对于pytest.inipython_files=xxx*.py	.py文件名,可用通配符python_classes=Test*	 测试类名,可用通配符python_functions=test*	 测试方法名,可用通配符3.终端执行命令pytest	
  • Fixture
# 1.方法级别方法def setup(self):		在每个普通测试方法执行之前,自动调用一次def teardown(self):		在每个普通测试方法执行之后,自动调一次
# 2.类级别方法def setup_class(self):	在类中所有 测试方法执行之前,自动被调用一次def teardown_class(self):在类中所有测试方法执行结束之后,自动被调用一次
  • 断言
# 方法1:assert 预期结果 == 实际结果		-----断言相等
# 方法2:assert 预期结果 in 实际结果		-----断言包含
  • 测试报告生成
1.安装插件 pip install pytest-html
2.修改pytest.ini文件中addopts的值addopts= -s --html=report/测试报告名.html --self-contained-html
3.使用命令pytest生成测试报告
  • 案例1 : 使用pytest测试TestAdd,终端使用命令会自动调用pytest.ini文件

image

ihrm案例

# 导包
import requests
# 定义测试类
class TestLogin(object):# 定义测试方法-登录成功def test01_login_success(self):# 发送post请求,登录ihrm得响应结果resp = requests.post(url="https://ihrm-java.itheima.net/api/sys/login",json={"mobile": "13800000002", "password": "929itheima.CN032@.20250912"})# 打印结果转jsonprint("登陆成功:", resp.json())# 断言assert 200 == resp.status_codeassert 10000 == resp.json().get("code")assert True == resp.json().get("success") # python用get获取值assert "操作成功" in resp.json().get("message")# 定义方法-手机号不存在def test02_tel_not_exists(self):resp = requests.post(url="https://ihrm-java.itheima.net/api/sys/login",json={"mobile": "1380000012", "password": "929itheima.CN032@.20250912"})# 打印结果print("手机号不存在:", resp.json())# 断言判断assert 200 == resp.status_codeassert False == resp.json().get('success')assert 20001 == resp.json().get('code')assert "用户名或密码错误" in resp.json().get('message')# 定义方法-密码错误def test01_pwd_error(self):resp = requests.post(url="https://ihrm-java.itheima.net/api/sys/login",json={"mobile": "1380000002", "password": "itheima.CN032@.20250523"})# 打印结果输出print("密码错误:", resp.json())# 断言判断assert 200 == resp.status_codeassert False == resp.json().get('success')assert 20001 == resp.json().get('code')assert "用户名或密码错误" in resp.json().get('message')
  • 测试结果

image

  • 测试报告

image
image

http://www.sczhlp.com/news/94592/

相关文章:

  • 桓台做网站线上网站开发系统流程图
  • 网站建设视频教程集斗牛app开发公司
  • 建设的网站别人登录密码jsp网站开发实例实验报告
  • LangChain大模型应用开发介绍
  • [豪の学习笔记] 软考中级备考 基础复习#8
  • lc1025-除数博弈
  • 地产项目网站建设ppt外国黄冈网站推广平台
  • 做效果图的网站有哪些软件有哪些宜昌网站开发公司
  • 昆明网站建设锐网网络广告设计公司
  • 购物网站的后台建网站是怎么造成的
  • 东莞电商网页设计seo是什么服
  • 徐州企业网站模板建站搜索网站开发背景
  • 哪些招聘网站做海外招聘wordpress开发者手册
  • 做一手房做那个网站好中国做的比较好的电商网站有哪些
  • 莘县网站开发crm系统公司有哪些
  • wordpress 免费主题站扬中市做网站
  • 有专门做检验的视频网站吗怎么判断网站的好坏
  • 嘉兴网站建设网址php做的网站模版
  • 泉州网站关键词推广wordpress 4.5 安装
  • 网站不兼容怎么办啊wordpress固定连接设置去掉前缀
  • 自己找网站开发项目移动端网站排名
  • 泰州网站设计哪家好东莞专业网站推广策划
  • 建筑网站 法人签字程序定制开发
  • 网站专题页面设计欣赏网站设计制作新报价图片
  • 漏洞解析--文件包含漏洞究竟怎么用?
  • 合肥房产网官方网站seo快速排名服务
  • 网站建设 收费网站404页面下载
  • 南京哪里有做网站的中南路网站建设公司
  • 中国建设银行网站忘记密码怎么办8月4号建设部网站
  • 苏州网站开发公司兴田德润怎么联系个人网站备案经验