postman使用与requests

本文详细介绍如何使用Postman进行API测试,包括发起不同类型的HTTP请求、处理多种Content-Type、使用Session和Token进行鉴权等关键步骤。

postman的使用:

发起一个请求:
1、请求地址

https://v4.ketangpai.com/UserApi/login

2、请求方法:post

描述
applicaiton/x-www-form-urlencode表单提交方式
multipart/form-data在使用包含文件上传控件的表单时,必须使用该值。
application/json作为请求头告诉服务端消息主体是序列化的JSON字符串。
text/plain空格转换为 “+” 加号,但不对特殊字符编码。

3、请求数据

======================================================================================================================================

get:params参数:支持字典类型。与请求url拼接的参数

post:
data参数,支持字典类型。默认它的content-type是applicaiton/x-www-form-urlencode
         其它的conten-type都可以使用data参数,但是data参数的值就不是字典了,然后在请求头当中指定content-type
         
json参数,字典类型。默认它的content-type是application/json

http请求库:requests

安装:pip install requests

 session鉴权
   Session类 - 自动带上cookies
   1、实例化Session类
token鉴权
get,post...
加密处理。。


get:params参数:支持字典类型。与请求url拼接的参数
post:
    data参数,支持字典类型。默认它的content-type是applicaiton/x-www-form-urlencode
             其它的conten-type都可以使用data参数,但是data参数的值就不是字典了,然后在请求头当中指定content-type
    json参数,字典类型。默认它的content-type是application/json
    

代码如下:

import requests

# 实例化一个会话对象
s = requests.Session()

# 发起登陆请求
url = "https://v4.ketangpai.com/UserApi/login"
req_data = {
    "email": "2501768591@qq.com",
    "password": "yuan5311645",
    "remember": "0"
}

# 登陆请求
s.post(url, data=req_data)

# 发起下一个请求
url2 = "https://v4.ketangpai.com/VipApi/isVip"
resp = s.get(url2)
print(resp)		

print(resp.status_code)		# 获取响应状态码

print(resp.json())		
""" 响应数据 - 如果接口的响应数据是json格式 ,可以用这个方法。这个方法执行后的结果,是一个字典。 """

print(resp.headers)		# 响应头

print(resp.cookies)			# 响应的cookies

=============================================================
requests_token 鉴权

import requests

url = "https://openapiv5.ketangpai.com/UserApi/login"
req_data = {"email":"2501768591@qq.com",
            "password":"yuan5311645",
            "remember":"0",
            "code":"",
            "mobile":"",
            "type":"login"}

resp = requests.post(url, json=req_data)
resp_dict = resp.json()
token = resp_dict["data"]["token"]
print(token)

url2 = "https://openapiv5.ketangpai.com/CourseApi/semesterList"
req_data2 = {"isstudy":"0","search":""}
req_header = {"token": token}
resp2 = requests.post(url2,json=req_data2, headers=req_header)
print(resp2.json())

===============================================================
使用requests发登录请求:

import requests

# ==================== 注册接口 =========================================

#   请求头
headers = {
    "X-Lemonban-Media-Type":"lemonban.v2 "
}

"""注册 url 地址"""
url = 'http://api.lemonban.com/futureloan/member/register'

#   请求体
req_data = {
    "mobile_phone":"13560748369",
    "pwd":"wtg444444",
    "reg_name":"白糖"
}

# 请求类型:post
resp = requests.post(url,json=req_data, headers=headers)
print("注册的相应结果:{}".format(resp.text))

# ============================ 登录接口 =====================================

"""登录 url 地址"""
url = 'http://api.lemonban.com/futureloan/member/login'
headers = {
    "X-Lemonban-Media-Type":"lemonban.v2 "
}

# 请求体
req_data = {
    "mobile_phone":"13560748369",
    "pwd":"wtg444444"
}

# 请求类型:post
resp = requests.post(url,json=req_data,headers=headers)
print(f"登录的相应结果:{resp.text}")

# 提取出来,给到下一个接口作为请求
json_res = resp.json()
token = json_res["data"]["token_info"]["token"]
print(token)

#   提取用户 id
member_id = json_res["data"]["id"]
print(member_id)

# ===================== 充值接口 =============================================
# 请求头
headers = {
    "X-Lemonban-Media-Type":"lemonban.v2 ",
    "Authorization": "Bearer {}".format(token)
}
"""充值 url 地址"""
url = 'http://api.lemonban.com/futureloan/member/recharge'

# 请求数据
req_data = {
    "member_id": member_id,
    "amount": 16000
}

resp = requests.post(url, json=req_data, headers=headers)
print(resp.json())

========================================================

my_requests.py – 根据项目特色去封装的请求,比如请求头定制/鉴权处理

import requests

class MyRequests:
    # 初始化
    def __init__(self):
        self.headers = {"X-Lemonban-Media-Type": "lemonban.v2 "}

    # 属性
   # 方法											 							
    def send_requests(self, url, method(咩着子), json=None, params(伯略而子)=None, token=None):
        self.__deal__header(token)
        #   调用 requests 的方法发起一个请求。并得到相应结果
        if method.upper()== "GET":
            resp = requests.request(method, url, params=params, headers=self.headers)
        else:
            resp = requests.request(method, url, json=json, headers=self.headers)
        return resp

    def __deal__header(self, token=None):
        if token:
            self.headers["Authorization"] = "Bearer {}".format(token)

==============================================================

用例设计上花的时间(某个接口):

1、了不了解这个接口业务?或者熟不熟系统的业务?
2、有详细接口文档吗? 了解这个接口的过程长吗?
3、接口复杂吗?接口涉及的业务复杂吗?- 疏理逻辑/前置准备工作多吗?参数的组合多不多?
强烈建议大家去看看自己项目的接口都长啥样,去设计一个测试用例。
这是一个熟能生巧的过程。
最开始的时候,规定一天写两个接口的用例,后来发现有点时候,一天一个接口都写不完,因为实在是有些逻辑没搞懂啊!
你如果对这个东西懂了之后,你设计用例就很快了。写起来搜搜的。
比如:你设计 5 个接口花了三天时间,用例数达到了300条。就可以知道一天写了多少条用例,取平均数。

自动化覆盖率怎么样 这个怎么回答?

1、你做这个项目的接口自动化多久了?
如果你的参与时间,只有三个月或者一两个月,那是不可能达到百分之90的,百分之70都很难,还要搭建框架等等都需要时间。
2、系统大不大?是否复杂?
系统很大,比如系统有 6000 个接口? 覆盖率:如果是一个人做的接口,覆盖率是30%、70%、80% 都是可以的。
覆盖率:功能上/手工用例覆盖率 - 30% - 90%

覆盖率用例多少条?遇到什么困难(及解决方案)?
不想听你写代码上的困难(实现逻辑上)…
正确的回答方式:处理某个业务上遇到的设计困难。
你怎么搭建自动化测试框架的?

<think>我们正在比较Python的requests库和Postman工具发起POST请求的方法。根据用户的问题,我们需要从多个角度进行比较,包括使用方式、功能特点、适用场景等。同时,我们要参考提供的引用内容。 引用[1]提到requests库是Python中用于发送HTTP请求的强大工具,支持GET和POST等请求,包括参数传递、响应处理和异常处理。 引用[2]展示了requests库的基本用法,包括发送GET请求,同样POST请求也可以类似地发送。 引用[3]和引用[4]则分别展示了requests库在发送POST请求时携带token和json数据的具体代码示例,以及使用Postman发送请求的对比。 Postman是一个图形化的API测试工具,而requests库是一个编程库,因此它们在用法上有本质区别。 下面我们从几个方面进行比较: 1. **使用方式**: - **requests库**:需要在Python代码中编写请求,包括构建URL、请求头、请求体等,然后通过调用requests.post()方法发送请求,并处理响应。 - **Postman**:通过图形界面操作,填写URL、选择请求方法、设置请求头和请求体(可以通过表单、raw等方式输入),然后点击发送即可看到响应结果。 2. **请求参数和数据的传递**: - **requests库**:在代码中通过参数明确传递,例如: - `data`参数用于传递表单数据(application/x-www-form-urlencoded) - `json`参数用于传递JSON数据(application/json) - `headers`参数用于设置请求头 - **Postman**:在界面中提供了不同的标签页(如Params, Body, Headers等)来填写相应的内容,用户可以选择不同的Body类型(如form-data, x-www-form-urlencoded, raw等)并输入数据。 3. **功能特点**: - **requests库**: - 可以集成到自动化脚本中,适合自动化测试、爬虫等场景。 - 支持会话(Session)保持,可以处理Cookie。 - 支持SSL证书验证、代理设置、超时设置等。 - 需要编程知识,但灵活性高。 - **Postman**: - 无需编程,图形化操作,适合手动测试和调试。 - 可以保存请求历史,创建集合(Collections),支持环境变量和全局变量。 - 支持自动化测试(通过编写测试脚本和运行集合),但需要在其界面内操作。 - 支持生成多种语言的代码(包括Python的requests代码),方便开发者转换。 4. **适用场景**: - **requests库**:适用于需要将HTTP请求集成到应用程序中的场景,如后端服务调用、数据采集、自动化测试脚本等。 - **Postman**:适用于API开发过程中的测试、调试和文档编写,也适用于团队协作共享API请求。 5. **学习曲线**: - **requests库**:需要一定的Python编程基础,但库本身设计简洁,易于上手。 - **Postman**:对于非程序员来说更友好,但高级功能(如编写测试脚本、使用环境变量)也需要学习。 6. **代码生成**: - Postman可以将当前配置的请求生成多种语言的代码,包括Python的requests代码,这有助于快速将测试好的请求转换为代码。 根据引用[3]和[4]的示例,我们可以看到使用requests发送POST请求的代码结构,而Postman则通过界面操作完成同样的请求。 总结: - 如果你正在开发一个Python程序,需要发送HTTP请求,那么requests库是首选。 - 如果你需要快速测试一个API,查看请求和响应,或者团队成员分享API请求配置,那么Postman更合适。 相关问题: 1. 在什么情况下应该选择使用Postman而不是requests库? 2. 如何将Postman中配置好的请求转换为Python的requests代码? 3. 使用requests库发送POST请求时,如何处理不同的数据格式(如表单、JSON)? 4. Postman有哪些高级功能可以提升API测试效率?</think>### Python的requestsPostman发起POST请求的比较 使用Python的requests库和Postman进行POST请求的主要区别体现在**使用场景、工作流程和功能特性**三个方面: #### 1. **使用方式** - **requests库**(编程方式) 需编写Python代码构建请求,例如: ```python import requests url = "https://api.example.com/login" headers = {"Content-Type": "application/json", "token": "YOUR_TOKEN"} data = {"username": "test", "password": "123456"} # 发送POST请求 response = requests.post(url, json=data, headers=headers) print(response.status_code) # 输出状态码 print(response.json()) # 解析JSON响应 ``` 特点: - 通过代码控制请求参数(`data`/`json`/`headers`)[^3][^4] - 适合**自动化场景**(如脚本、爬虫、持续集成) - **Postman**(图形化界面) 通过GUI操作: - 在URL栏输入目标地址 - 在**Body**标签选择数据类型(JSON/form-data等) - 在**Headers**标签添加请求头 - 点击"Send"发送请求 特点: - 无需编程,可视化编辑请求[^2] - 适合**手动测试和调试**API #### 2. **功能差异** | **特性** | **requests库** | **Postman** | |-------------------|------------------------------------|----------------------------------| | 环境变量 | 需通过Python变量管理 | 内置环境/全局变量管理器 | | 测试脚本 | 需用Python编写断言 | 内置JavaScript测试沙盒 | | 身份验证 | 代码中配置(Basic Auth/OAuth等) | 图形化配置认证方式 | | 协作共享 | 需共享代码文件 | 支持集合(Collection)共享 | | 代码生成 | - | 可生成Python/Java等语言代码[^2] | #### 3. **适用场景** - **优先选requests库**: - 需要将请求集成到Python应用中(如Web服务、数据分析管道)[^1] - 需要自动化处理响应数据(如提取JSON字段存入数据库) - 高频重复请求(如定时任务) - **优先选Postman**: - 快速调试API(如验证接口是否返回预期JSON结构) - 文档协作(生成API文档并分享给团队) - 复杂请求测试(如文件上传、Cookie会话保持) #### 4. **数据格式处理对比** - **发送JSON数据** - requests:直接使用`json`参数(自动序列化+添加Content-Type) ```python requests.post(url, json={"key": "value"}) ``` - Postman:在Body标签选择**raw** → **JSON**,手动输入JSON内容 - **发送表单数据** - requests使用`data`参数传递字典 ```python requests.post(url, data={"field1": "value1"}) ``` - Postman:在Body标签选择**x-www-form-urlencoded**,填写键值对 > **关键区别**:Postman提供即时响应可视化,而requests库需通过代码解析响应(如`response.json()`)[^1][^3]。对于需要携带Token的请求,两者均可通过Headers实现,但Postman的界面操作更直观[^3][^4]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值