使用request库实现接口测试-笔记

目录

  • request库
    • request库的安装和查验
    • request发送请求的语法
    • 获取响应结果指定内容
    • 案例
  • Unittest框架集成Requests库
    • Unittest框架语法
    • Unittest框架基础代码
    • 案例

request库

request库是python编写的,基于urllib的HTTP库,使用方便。

request库的安装和查验

安装:
方法一:pip install requests
方法二:pip install -i 镜像源 requests
方法三:pycharm设置中解释器中去安装
在这里插入图片描述
验证:
方法一:pip show requests
方法二:pip list(查看列表中是否存在requests)
方法三:pycharm设置中解释器确认是否存在requests

request发送请求的语法

resp=requests.请求方法(url='url地址',params={k:v},header={k:v},data={k:v},json={k,v},cookies='cookie数据') 请求方法:get请求、post请求、put请求、delete请求url:待请求的url  -----string类型params:查询参数   ------字典headers:请求头   --------字典data:表单格式的请求体    ----字典json:json格式的请求体  ------字典cookie:cookie数据    ------string类型resp:响应结果

获取响应结果指定内容

常用
获取URL:resp.url
获取响应状态码:resp.status_code
获取cookie:resp.cookies
获取响应头:resp.headers
获取响应体:
文本格式:resp.text
json格式:resp.json()

import requests
resp=requests.get(url="http://www.baidu.com")#获取URL:resp.url
print(resp.url)
#获取响应状态码:resp.status_code
print(resp.status_code)
#获取cookie:resp.cookies
print(resp.cookies)
#获取响应头:resp.headers
print(resp.headers)
#获取响应体:
#	文本格式 :resp.text
#	json格式:resp.json()
print(resp.text)
print(resp.json())     #当实际响应体不符合 JSON 格式时调用会报错

案例

入门案例:使用Request库访问百度http:www.baidu.com

import requests
resp=requests.get(url="https://www.baidu.com")
print(resp.text)

案例1:带参数的get请求,使用requests库,请求淘宝搜索接口,查询iphone

import requests
#resp=requests.get(url="https://s.taobao.com/search?q=iPhone")
parma={"q":"iPhone"}
resp=requests.get(url="https://s.taobao.com/search",params=parma)
print(resp.text)

案例2:post请求,有请求头和表单参数

import requests
headers={"content-type":"application/x-www-form-urlencoded"
}
url="https://login.taobao.com/newlogin/login.do?appName=taobao&fromSite=0"
data={"loginId": "15897908103","password2":"991d2723de5f47a7d2af0bb265f24723f76aad30cd229fb6aa341685c703b2c43b1ca8d447cfa0f5c8574b30c01f07b39584ed9bfc066a28ab4fb7c018ad7d09b807a376b2f04304c2c1dd1f588b16b7c799584a558335bfa0ed0a53e0e15623a2490a9c62af4f53f6088a2c88988713dc60eb2c55253325e4baa958b40b407f"
}
param={"appName":"taobao","formSite":0
}
resp=requests.post(url=url,params=param,headers=headers,data=data)print(resp.text)

Unittest框架集成Requests库

Unittest是开发人员用来实现“单元测试的框架”,可以在自动化“测试执行”时使用
使用Unittest的好处:
1.方便管理、维护测试用例
2.提供丰富的断言方法
3.生产测试报告(需要插件HTMLTestReport)

Unittest框架语法

TestCase

#1.导包
import unittest
#定义测试类继承TestCase
class TestXxxx(unittest.TestCase):#测试用例,即测试方法,建议方法名test+编号def test_01(self):pass

TestFixture
方法级别的前置方法setup(self);后置方法teardown(self)(在每个函数执行之前之后执行)
类级别的前置方法:setupclass(cls)后置方法teardownclass(cls).(方法前需加装饰器@classmethod;在类执行之前之后执行)

TestSuite&TestLoader

#方法一
#实例化测试集对象
suite=unittest.TestSuite()
#把测试用例添加到测试集
suite.addTest(unittest.makesuite(类名))
#方法二(搜索文件名可通过*通配符查询)
suite unittest.TestLoader().discover("搜索目录",“搜索文件名”)

HTMLTestRunner

runner=HTMLTestRunner("报告存放路径",title="报告标题",description='描述信息')
runner.run(suite)

Unittest框架基础代码

import unittest
from findIphone import add
class TestAdd(unittest.TestCase):@classmethoddef setUpClass(cls):print("开始测试")@classmethoddef tearDownClass(cls):print("测试结束")def setUp(self):print("用例开始测试")def tearDown(self):print("用例测试结束")def test01_add(self):self.assertEqual(3,add(1,2))def test02_add(self):self.assertEqual(4,add(2,2))
import unittest
from htmltestreport import HTMLTestReport
suite=unittest.TestLoader().discover('.','testAdd.py')
runner=HTMLTestReport('report.html')
runner.run(suite)

案例

import unittest
import requestsclass TestFind(unittest.TestCase):def test01_find(self):url='https://mbd.baidu.com'resp=requests.post(url=url)self.assertEqual(200,resp.status_code)#断言json串中的数据seccessself.assertEqual(True,resp.json()['seccess'])
import unittest
from htmltestreport import HTMLTestReportsuite=unittest.TestLoader().discover('.','request*.py')
runner=HTMLTestReport('report.html')
runner.run(suite)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/70174.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

快速傅里叶离散变换FFT (更新中)

声明:参考了 y y c yyc yyc 的 blog 和 PPT (from smwc) ,以及 w z r wzr wzr 的 blog 。 目录 Part 1 多项式Part 2 FFT概论Part 3 点值与插值Part 4 复数,单位根Part 5 Part 1 多项式 定义:对于有限数列 A 0 A_{0} A0​~ n…

【C++】STL——list的使用

目录 💕1.带头双向链表List 💕2.list用法介绍 💕3.list的初始化 💕4.size函数与resize函数 💕5.empty函数 💕6.front函数与back函数 💕7.push_front,push_back,pop_front,pop_back函数…

2021Java面试-基础篇

文章目录 前言一: Java概述 1、何为编程2、JDK1.5之后的三大版本3、JVM,JRE和JDK的关系4、什么是跨平台?原理是什么5、Java语言有哪些特点6、什么是字节码?采用字节码的最大好处是什么7、什么是Java程序的主类?应用程序和小程序的…

MapStruct工具类的使用

文章目录 1.简介2.作用2.1 属性拷贝2.2 类型安全2.3 性能高效2.4 自定义转换 3.如何使用3.1 创建一个maven工程项目并引入mapstruct的坐标依赖:3.2 源对象类3.3 目标对象类(和源对象类中的字段属性名相同)3.4 创建接口SyncMapper(…

FPGA| 使用Quartus II报错Top-level design entity ““ is undefined

1、使用FPGA准备点亮LED测试下板子,发现这个报错Error (12007): Top-level design entity "LEDLED" is undefined 工程如上图 报错如下图 2、分析到原因是因为工程名称和顶层模块里面的module名称不一样导致 解决办法:修改module名称和顶层模…

Window获取界面空闲时间

‌GetLastInputInfo‌是一种Windows API函数,用于获取上次输入操作的时间。 该函数通过LASTINPUTINFO结构返回最后一次输入事件的时间。 原型如下 BOOL WINAPI GetLastInputInfo(PLASTINPUTINFO plii);那么可以利用GetLastInputInfo来得到界面没有操作的时长 uint…

LeetCode - #198 打家劫舍

网罗开发 (小红书、快手、视频号同名) 大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等…

验证工具:SVN版本控制

1-SVN概念 SVN(Subversion)是一种集中式版本控制系统,它用于文件和目录的版本管理,允许多个用户协同工作,同时追踪每个文件和目录的历史修改记录。以下是关于SVN版本控制的详细介绍: 一、SVN的基本概念 仓库(Repository):SVN的仓库是一个集中存储所有文件和目录的地…

【DeepSeek】本地私有化部署 DeepSeek 模型教程

一、引言 DeepSeek 模型是一种强大的语言模型,本地私有化部署可以让用户在自己的环境中安全、高效地使用该模型,避免数据传输到外部带来的安全风险,同时也能根据自身需求进行定制化配置。本教程将详细介绍如何在本地进行 DeepSeek 模型的私有…

【玩转 Postman 接口测试与开发2_016】第13章:在 Postman 中实现契约测试(Contract Testing)与 API 接口验证(上)

《API Testing and Development with Postman》最新第二版封面 文章目录 第十三章 契约测试与 API 接口验证1 契约测试的概念2 契约测试的工作原理3 契约测试的分类4 DeepSeek 给出的契约测试相关背景5 契约测试在 Postman 中的创建方法6 API 实例的基本用法7 API 实例的类型实…

为什么“记住密码”适合持久化?

✅ 特性 1:应用重启后仍需生效 记住密码的本质是长期存储用户的登录凭证(如用户名、密码、JWT Token),即使用户关闭应用、重启设备,仍然可以自动登录。持久化存储方案: React Native 推荐使用 AsyncStorag…

echarts、canvas这种渲染耗时的工作能不能放在webworker中做?

可以将 ECharts、Canvas 等渲染耗时的工作放在 Web Worker 中进行处理。Web Worker 允许在后台线程中运行 JavaScript,从而将计算密集型任务从主线程中分离出来,避免阻塞用户界面。以下是一些关键点: 优势 性能提升:将耗时的渲染…

proxmox通过更多的方式创建虚拟机

概述 作为一名资深运维工程师,我们经常需要在 Proxmox 虚拟化平台上创建和管理虚拟机。本文将介绍三种不同的方式在 Proxmox 上创建 Ubuntu 虚拟机: 通过 Proxmox 命令创建虚拟机通过 Shell 脚本自动化创建虚拟机使用 Proxmox API 创建虚拟机 每种方式…

【分布式架构理论3】分布式调用(2):API 网关分析

文章目录 一、API 网关的作用1. 业务层面:简化调用复杂性2. 系统层面:屏蔽客户端调用差异3. 其他方面: 二、API 网关的技术原理1. 协议转换2. 链式处理3. 异步请求机制1. Zuul1:同步阻塞处理2. Zuul2:异步非阻塞处理 三…

使用线性回归模型逼近目标模型 | PyTorch 深度学习实战

前一篇文章,计算图 Compute Graph 和自动求导 Autograd | PyTorch 深度学习实战 本系列文章 GitHub Repo: https://github.com/hailiang-wang/pytorch-get-started 使用线性回归模型逼近目标模型 什么是回归什么是线性回归使用 PyTorch 实现线性回归模型代码执行结…

20250205——Windows系统基于ollama的DeepSeek-R1本地安装

1、安装ollama 1.1 Windows系统 打开ollama官网链接Download Ollama on Windows,根据自己的系统下载安装包,如果是Windows系统,下载Windows版本。 1.1 Linux系统 (这个是因为运行遇到报错了,想自己记录一下解决方法&a…

VSCode中使用EmmyLua插件对Unity的tolua断点调试

一.VSCode中搜索安装EmmyLua插件 二.创建和编辑launch.json文件 初始的launch.json是这样的 手动编辑加上一段内容如下图所示: 三.启动调试模式,并选择附加的进程

java-关键字(final,static)

关键字 final 和 static 是两个常用的关键字,它们分别用于不同的场景,具有不同的作用。 final final 关键字用于表示某个实体是不可变的。它可以应用于变量、方法和类。 final 变量 当 final 用于变量时,表示该变量一旦被初始化后&#…

pytorch基于FastText实现词嵌入

FastText 是 Facebook AI Research 提出的 改进版 Word2Vec,可以: ✅ 利用 n-grams 处理未登录词 比 Word2Vec 更快、更准确 适用于中文等形态丰富的语言 完整的 PyTorch FastText 代码(基于中文语料),包含&#xff1…

JVS低代码逻辑引擎多种业务场景触发案例配置:涵盖列表页按钮、表单数据、流程审批、外部API接口调用等

逻辑引擎作为JVS低代码开发套件的核心组件,专注于业务逻辑的快速构建与实现,它扮演着程序配置与执行的核心角色,适用于多样化的应用场景。该逻辑引擎设计灵活,能够通过多种配置方式被触发,以精准响应各类业务需求并实现…