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

使用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):
    @classmethod
    def setUpClass(cls):
        print("开始测试")
    @classmethod
    def 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 requests

class TestFind(unittest.TestCase):
    def test01_find(self):
        url='https://mbd.baidu.com'
        resp=requests.post(url=url)
        self.assertEqual(200,resp.status_code)
        #断言json串中的数据seccess
        self.assertEqual(True,resp.json()['seccess'])
import unittest
from htmltestreport import HTMLTestReport

suite=unittest.TestLoader().discover('.','request*.py')
runner=HTMLTestReport('report.html')
runner.run(suite)


http://www.kler.cn/a/533808.html

相关文章:

  • SpringSecurity密码编码器:使用BCrypt算法加密、自定义密码编码器
  • Java进阶笔记(中级)
  • 深度探索DeepSeek-R1:AI大模型的本地应用与个人知识库构建
  • 《redis哨兵机制》
  • 105,【5】buuctf web [BJDCTF2020]Easy MD5
  • 除了网页,还有哪些方式可以访问deepseek r1
  • 阿里云 ubuntu22.04 中国区节点安装 Docker
  • 2024年12月 Scratch 图形化(一级)真题解析 中国电子学会全国青少年软件编程等级考试
  • arm 下 多线程访问同一变量 ,使用原子操作 性能差问题
  • 【Git】二、分支管理详解
  • 2024年12月 Scratch 图形化(三级)真题解析 中国电子学会全国青少年软件编程等级考试
  • 记录一下 在Mac下用pyinstallter 打包 Django项目
  • 自己实现的一个缓存数据库(搞着玩) .net Core/6/8/9
  • 【C语言高级特性】位操作(二):应用场景
  • python开发:爬虫示例——GET和POST请求处理
  • vue2-给data动态添加属性
  • WPS中解除工作表密码保护(忘记密码)
  • 手写MVVM框架-实现v-model(单向绑定)
  • rabbitMQ数据隔离
  • 1 HBase 基础
  • PHP 中 `foreach` 循环结合引用使用时可能出现的问题
  • 【C++】STL——vector的使用
  • 【自然语言处理(NLP)】生成词向量:ELMo(Embedded from Language Models)原理及应用
  • 硬件电路基础
  • 每日Attention学习20——Group Shuffle Attention
  • DeepSeek-V3 大模型哪些地方超越了其他主流大模型