get请求实战
get 无参数
ip:qa.yansl.com
端口:8080
请求方法: GET
请求地址:/prefrenceArea/listAll
请求数据:无
# 导入requests,发送各种各样的不同类型的http请求的第三方库
import requests
# 定义一个方法,函数名为test_no_parames,遵循pytest命名规范,命名规范以test_开头
def test_no_params():
# 发送get类型的http请求,无参数,并赋值给r变量
r = requests.get("GET", "http://qa.yansl.com:8080/prefrenceArea/listAll")
# 输出打印r.文本信息
print(r.text)
get 键值对数据(query)
ip:qa.yansl.com
端口:8080
请求方法: GET
请求地址:/order/list
请求数据:
keyvalue
pageSize5
pageNum1
第一种方法:
# 有参数,且参数跟在url后面,中间以?分割
# 定义一个方法,函数名为test_param_1,遵循pytest命名规范,命名规范以test_开头
def test_param_1():
# 发送get类型的http请求,最后并赋值给r变量
r = requests.request("GET", "http://qa.yansl.com:8080/order/list?pageSize=5&pageNum=1")
# 输出打印r.文本信息
print(r.text)
第二种方法:
# 有参数,且参数用params传参
# 定义一个方法,函数名为test_param_2,遵循pytest命名规范,命名规范以test_开头
def test_param_2():
# 将参数存进一个字典中,赋值给para变量
para = {'pageSize': 5, 'pageNum': 1}
# 发送get类型的http请求,并赋值给r变量
r = requests.request("GET", "http://qa.yansl.com:8080/order/list", params=para)
# 输出打印r.文本信息
print(r.text)
点击查看实例讲解
get path数据
ip:qa.yansl.com
端口:8080
请求方法: GET
请求地址:/order/{id}
请求数据:
keyvalue
id12
# 有参数,且参数用path传参
# 定义一个方法,函数名为test_path,遵循pytest命名规范,命名规范以test_开头
def test_path():
# 将参数存进一个变量中,赋值给path变量
path = 12
# 发送get类型的http请求,将path参数化,用format函数格式化,并调用path变量
r = requests.request("GET", "http://qa.yansl.com:8080/order/{}".format(path))
# 输出打印r.文本信息
print(r.text)
点击查看实例讲解
get 下载文件
ip:api.yansl.com
端口:8084
请求方法: GET
请求地址:/product/downRepertoryTemplate
请求数据:无
# 下载文件
# 定义一个方法,函数名为test_download,遵循pytest命名规范,命名规范以test_开头
def test_download():
# 发送get类型的http请求,将path参数化,用format函数格式化,并调用path变量
r = requests.request("GET", "http://qa.yansl.com:8084/product/downRepertoryTemplate")
# r.content 获取响应正文中的原始数据 赋值给content变量
content = r.content
# 写入文件,文件名:"test.xls" 注意:打开模式必须是"wb"
# w 的意思是写入的意思,b就是二进制的意思,加起来的意思就是写入二进制数据
with open("test.xls", "wb")as f:
# 写入数据
f.write(content)
post请求实战
post 无参数
ip:qa.yansl.com
端口:8080
请求方法: POST
请求地址:/aliyun/oss/callback
请求数据:无
# post 无参数
def test_no_params():
# 发送post类型的http请求,无参数,并赋值给r变量
r = requests.request("POST", "http://qa.yansl.com:8080/aliyun/oss/callback")
# 输出打印r.文本信息
print(r.text)
post键值对(query)
ip:qa.yansl.com
端口:8080
请求方法: POST
请求地址:/admin/permission/update
请求数据:
keyvalue
adminId8
permissionIds1,2,4
# post键值对(query)
# 定义一个方法,函数名为test_param_2,遵循pytest命名规范,命名规范以test_开头
def test_post_param():
# 将参数存进一个字典中,赋值给data变量
data = {'permissionIds': [1, 2, 4], 'adminId': 8}
# 发送post类型的http请求,并赋值给r变量
# data:往请求正文中添加数据,如果入参格式为字典,会自动把字典类型的格式转换成键值对格式
r = requests.request("POST", "http://qa.yansl.com:8080/admin/permission/update", data=data)
# 输出打印r.文本信息
print(r.text)
点击查看实例讲解
post json
ip:qa.yansl.com
端口:8080
请求方法: POST
请求地址:/admin/login
请求数据:
{
"password": "123456",
"username": "admin"
}
第一种方法:
# post json
# 定义一个方法,函数名为test_post_json,遵循pytest命名规范,命名规范以test_开头
def test_post_json():
# 将json格式的参数存进json变量中
json = {
"password": "123456",
"username": "admin"
}
# 发送post类型的http请求,并赋值给r变量
# json:传入json格式的参数
r = requests.request("POST", "http://qa.yansl.com:8080/admin/login", json=json)
# 输出打印r.文本信息
print(r.text)
第二种方法:
# post json data headers 传参
# 定义一个方法,函数名为test_post_json2,遵循pytest命名规范,命名规范以test_开头
def test_post_json2():
# 将json格式的参数存进data变量中
data = '''
{
"password": "123456",
"username": "admin"
}
'''
headers = {
"content-type": "application/json"
}
# 发送post类型的http请求,并赋值给r变量
# data:往请求正文中添加数据,如果入参格式为字符串格式,不会对数据做任何修改
# 传入指定的请求头参数:"content-type":"application/json"
r = requests.request("POST", "http://qa.yansl.com:8080/admin/login", data=data, headers=headers)
# 输出打印r.文本信息
print(r.text)
点击查看实例讲解
post path参数
ip:qa.yansl.com
端口:8080
请求方法: POST
请求地址:/admin/delete/{id}
请求数据:
parametervalue
id7
# post path 有参数,且参数用path传参
# 定义一个方法,函数名为test_post_path,遵循pytest命名规范,命名规范以test_开头
def test_post_path():
# 将参数存进一个变量中,赋值给path变量
path = 6
# 发送post类型的http请求,将path参数化,用format函数格式化,并调用path变量
r = requests.request("GET", "http://qa.yansl.com:8080/admin/delete/{}".format(path))
# 输出打印r.文本信息
print(r.text)
点击查看实例讲解
post xml参数
ip:192.168.1.128
端口:5050
请求方法: POST
请求地址:/signup/xmlDemo
请求数据:
点击查看实例讲解
post string字符串
ip:192.168.1.128
端口:5050
请求方法: POST
请求地址:/signup/stringDemo
请求数据:
hello world
点击查看实例讲解
post 上传文件
ip:api.yansl.com
端口:8084
请求方法: POST
请求地址:/product/uploaProdRepertory
请求数据:任意excel文件
# 上传文件
def test_upload():
# rb: 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
with open("test1.xls","rb")as f:
# 将获取的文件内容 存到一个字典中,并且赋值file变量
file = {"file":f}
# 发送post请求,上传文件,files
r = requests.request("POST", "http://qa.yansl.com:8084/product/uploaProdRepertory",files=file)
# 输出打印r.文本信息
print(r.text)
with open() as f的用法
r: 以只读方式打开文件。文件的指针将会放在文件的开头。这是**默认模式**。
rb: 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
r+: 打开一个文件用于读写。文件指针将会放在文件的开头。
rb+:以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
w: 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb: 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
w+: 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb+:以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a: 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab: 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+: 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+:以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用
点击查看实例讲解
总结:
"""
发送请求 requests.request()
两个位置参数:
method:请求方法 全大写 例如:POST GET PUT
url:http://ip:port/请求地址
n个关键字参数
params:往url中添加键值对类型的数据,入参为字典格式
data:往请求正文中添加数据。
1、若入参格式为字典,会自动把字典类型数据转成键值对格式
2、如果入参格式为字符串,不会对数据做任何修改
json:往请求正文中添加json字符串数据,
1、把字典类型数据转换成json字符串类型
2、把json字符串存入请求正文中
3、请求头中添加content-type:application/json
headers:往请求头中添加数据,入参为字典格式
files:上出文件,入参格式为字典类型,字典值要求必须是一个以rb模式打开的文件
获取响应信息
获取响应正文内容:
r.text 获取编码后的文本
r.content 获取原始数据
"""
获取请求响应信息
import requests
def test_json_2():
da = '''
{
"password": "123456",
"username": "admin"
}
'''
head = {"content-type":"application/json"}
r = requests.request("POST", "http://qa.yansl.com:8080/admin/login",data=da,headers=head)
print(r.text)
# 请求信息
# 1、url
print(r.request.url)
# 2、请求方法
print(r.request.method)
# 3、请求头
print(r.request.headers)
# 4、请求正文
print(r.request.body)
# 获取响应信息
# 1、响应状态码
print(r.status_code)
# 2、响应头
print(r.headers)
# 3、响应正文
print(r.text) # 编码后的文本
print(r.content) # 原始数据
print(r.json()) # 字典格式