zl程序教程

您现在的位置是:首页 >  其他

当前栏目

接口自动化测试-No1- Python requests发请求

2023-02-25 18:21:55 时间

学习查考文档

https://www.w3cschool.cn/requests2/

一, 写代码方式实现接口Get请求

二, Response返回内容讲解

三, 写代码方式实现接口Post请求

四, 特殊情况

一, 实现Get请求

import requests

#方法1

url = "http://*/api/v1/goods"

r1 = requests.get(url)

print(r1.status_code)

print(r1.headers)

print(r1.text)

#方法2

url2 = "http://*/api/v1/login"

params = {

"page": 2,
"size": 2

}

r2 = requests.get(url2, params=params)

print(r2.text)

输出结果

"""

Requests传递URL参数

"""

import requests

#方法1

url = "http://*/api/v1/goods"

payload = {

"page": 1,

"size": 1

}

r1 = requests.get(url, params=payload)

print(r1.status_code)

print(r1.headers)

print(r1.text)

输出结果

(只取到第一页的第一个数据)

二, Response返回内容

-- r.status_code # 响应状态码

-- r.content # 字节方式的响应体,会自动为你解码 gzip 和 deflate 压缩

-- r.headers # 以字典对象存储服务器响应头,但是这个字典比较特殊,字典键不区分大小写,若键不存在则返回None

-- r.json() # Requests中内置的JSON解码器 ,json转成python的字典了

-- r.url # 获取url

-- r.encoding # 编码格式

-- r.cookies # 获取返回的cookie

-- r.text # 字符串方式的响应体,会自动根据响应头部的字符编码进行解码

-- r.ok # 返回True / False 状态码在200-400之间 返回True

# 状态码在400-600之间返回 False

-- r.history # 有重定向请求的时候,可以查看重定向记录

-- r.apparent_encoding # 分析响应编码

第1个例子:

"""

get 请求的路径参数

id 是python的内置函数, 变量不要叫id

"""

import requests

sp_id = 10

url = f"http://*/api/v1/goods/{sp_id}"

print(url)

r1 = requests.get(url)

print(r1.status_code) #200

print(r1.headers) # respond headers

print(r1.text) # 以文本的方式

print(r1.content) # byte 解码 文件,图片

#.json() 用作json解析器

print(r1.json())

print(type(r1.json()))

print(r1.json()"msg")

#输出msg对应的value值

#json是有规律的字符串{"key": value}

print(r1.json().get("msg"))

print(dict(r1.cookies)) # 输出cookies里面的值

第2个例子:

import requests

url = "https://www.baidu.com/"

r = requests.get(url)

#print(r.text) 输出的内容种含有乱码 “更多产哔

#print(r.statuscode)

print(r.encoding) # 使用的编码ISO-8859-1

print(r.apparent_encoding) #正确的编码utf-8

#动态获取到html里面的编码,需要知道返回的html编码

print(r.content)

print(r.content.decode(r.apparent_encoding)) #

#固定用法使用正确的编码格式进行解码

#输出含有中文的文字 “更多产品”

三, 实现Post请求

"""

post请求Content-Type第一种取值的方式

Content-Type: application/x-www-form-urlencoded

"""

import requests

url = "http://*/api/v4/login"

body = {

"username": "test",
"password": "123456"

}

r = requests.post(url, data=body)

print(r.text)

"""

POST请求Content-Type第二种取值的方式

Content-Type: application/josn

POST推荐这种

"""

print("------第一种方法-----")

import requests

url = "http://*/api/v1/login"

body = {

"username": "test",
"password": "123456"

}

r = requests.post(url, json=body)

print(r.status_code)

print(r.json())

"""

POST 不推荐这种

"""

import requests

import json

print("------第二种方法-----")

url = "http://*/api/v1/login"

body = {

"username": "test",
"password": "123456"

}

headers = {

"Content-Type": "application/json"

}

r = requests.post(url, headers=headers, data=json.dumps(body))

print(r.text)

输出结果

四,特殊情况,忽略证书

"""

https请求忽略证书校验

"""

import requests

import warnings

warnings.filterwarnings('ignore')

url = "https://www.cnblogs.com/jiangkeji/"

r = requests.get(url,verify=False)

#print(r.text)

print(r.status_code)

输出结果: