一、Requests的使用
1、介绍及使用
介绍:流行的接口http(s)请求工具。
官网:http://cn.python-requests.org/zh_CN/latest/
安装:pip install requests
快速使用:import requests
#1、导入requuests包
import requests
#2、发送get请求
r = requests.get("http://www.baidu.com")
#3、打印结果
print(r)
print(r.status_code)
print(r.headers)
print(r.url)
print(r.cookies)
print(r.text)
程序运行结果:200(这个为返回值)
请求返回介绍:
2、用例代码编写
测试用例需要写在testcase文件下
2.1 登录
测试用例
登录成功 http:/ /211.103.136.242:8064/ authorizations/
POST json
{“username” : “python” , “password” : “12345678"”}
#登录
#1、导入包
import requests
#2、定义登录方法
def login():
#3、定义测试数据
url="http://211.103.136.242:8064/authorizations/"
data={"username" : "python","password" : "12345678"}
#4、发送post请求
r=requests.post(url,json=data)
#5、输出结果
#是json还是text,取决于返回的接口,如果不是json格式的话,使用json会报错
print(r.json)
if __name__=="__main__":
login()
=如何查看一个函数的定义方法?=
鼠标移动到需要查找的函数上面,然后右键Go To->Declaration
2.2 个人信息
有个前置条件,就是需要先执行一下登录的信息,然后通过登录返回的信息进行一个验证
测试用例
个人信息 获取个人信息正确http://211.103.136.242:8064/user/登录 get headers: {
‘Authorization’:'JWT ’ + this.token}
下面的代码是继2.1继续写的
def info():
#1、参数
url="http://211.103.136.242:8064/user/"
token="上一步2.1登录输出的返回值中含有token,复制过来即可"
headers={'Authorization':'JWT ' + this.token}
#2、get请求
r=requests.get(url,headers=headers)
#3、输出
print(r.json())
2.3 商品列表
商品列表数据商品列表数据正确
下面地址的115不是固定的参数
http://211.103.136.242:8064/categories/115/skus/
get json
"{
““page”: “1”,
" “page _size””: ““10"”,
““orderina””: ““create time””
}”
def goods_list():
#1、参数
url="http://211.103.136.242:8064/categories/115/skus/"
data={
"page": "1",
"page _size": "10",
"orderina": "create time"
}
#2、请求
r=requests.get(url,json=data)
#3、输出
print(r.json())
2.4 购物车
购物车添加购物车成功http://211.103.136.242:8064/cart/
登录 post json
{“skiid”:“3”,“count” :“1”, “selected” :“true”}
def cart():
#1、参数
url="http://211.103.136.242:8064/cart/"
data={"skiid":"3","count" :"1", "selected" :"true"}
#需要登录,所以用到headers
headers={'Authorization':'JWT ' + this.token}
#2、请求
r=requests.post(url,json=data,headers=headers)
#3、输出
print(r,json())
2.5 订单
订单保存订单 http://211.103.136.242:8064/orders/
登录 post json
{ “address” : “1”,“pay_method”:“1”}
def order():
#1、参数
url="http://211.103.136.242:8064/orders/"
data={ "address" : "1","pay_method":"1"}
token="2.1登录输出的返回值中含有token,复制过来即可"
headers={'Authorization':'JWT ' + this.token}
#2、请求
r=requests.post(url,json=data,headers=headers)
#3、输出
print(r.json())
=注意=
token可能会失效,失效只需要重新执行一下2.1登录重新获取token即可。
3、方法封装
3.1 get封装
此文件名为:RequestsUtil.py
import requests
#1、创建get方法
def requests_get(url,headers):
#2、发送requests get 请求
r=requests.get(url,headers=headers)
#3、获取结果相应内容
code=r.status_code
try:
body=r.json()
except Exception as e:
body=r.text
#4、内容存到字典
res=dict() #定义字典
res["code"]=code
res["body"]=body
#5、字典返回
return res
此文件名为:Test_Mail_get.py
from RequestsUtil import requests_get
def login():
#3、定义测试数据
url="http://211.103.136.242:8064/authorizations/"
data={"username" : "python","password" : "12345678"}
#4、发送post请求
r=requests.post(url,json=data)
#5、输出结果
#是json还是text,取决于返回的接口,如果不是json格式的话,使用json会报错
print(r.json)
def info():
#1、参数
url="http://211.103.136.242:8064/user/"
token="上一步2.1登录输出的返回值中含有token,复制过来即可"
headers={'Authorization':'JWT ' + this.token}
#2、get请求
#r=requests.get(url,headers=headers)
requests_get(url,headers=headers)
#3、输出
#print(r.json())
print(r)
if __name__="__main__":
info()
3.2 post封装
#post方法封装
#1、创建post方法
def requests_post(url,json=None,headers=None):#json与headers可能传也可能不传,所以设置为None
#2、发送post请求
r=requests.post(url,json=json,headers=headers)
#3、获取结果内容
code=r.status_code
try:
body=r.json()
except Exception as e:
body=r.text
#4、内容存到字典
res=dict() #定义字典
res["code"]=code
res["body"]=body
#5、字典返回
return res
import requests
#1、创建get方法
def requests_get(url,headers):
#2、发送requests get 请求
r=requests.get(url,headers=headers)
#3、获取结果相应内容
code=r.status_code
try:
body=r.json()
except Exception as e:
body=r.text
#4、内容存到字典
res=dict() #定义字典
res["code"]=code
res["body"]=body
#5、字典返回
return res
此文件名为:Test_Mail_post.py
from RequestsUtil import requests_post
def login():
#3、定义测试数据
url="http://211.103.136.242:8064/authorizations/"
data={"username" : "python","password" : "12345678"}
#4、发送post请求
#r=requests.post(url,json=data)
r=requests_post(url,json=data)
#5、输出结果
#是json还是text,取决于返回的接口,如果不是json格式的话,使用json会报错
#print(r.json)
print(r)
def info():
#1、参数
url="http://211.103.136.242:8064/user/"
token="上一步2.1登录输出的返回值中含有token,复制过来即可"
headers={'Authorization':'JWT ' + this.token}
#2、get请求
#r=requests.get(url,headers=headers)
requests_get(url,headers=headers)
#3、输出
#print(r.json())
print(r)
def cart():
#1、参数
url="http://211.103.136.242:8064/cart/"
data={"skiid":"3","count" :"1", "selected" :"true"}
#需要登录,所以用到headers
headers={'Authorization':'JWT ' + this.token}
#2、请求
#r=requests.post(url,json=data,headers=headers)
r=requests_post(url,json=data,headers=headers)
#3、输出
print(r,json())
print(r)
if __name__="__main__":
#info()
login()
cart()
Requets重构
#1、创建类
class Request:
#2、定义公共方法
def requests_api(self,ur,data=Nonejson=None,headers=None,cookies=None,method="get"):
if method=="get":
#get请求
#1.增加方法的参数,根据参数来验证方法get/post,方法请求
r=requests.get(url,data=data,json=json,headers=headers,cookies=None)
elif method=="post":
#post请求
r=requests.post(url,data=data,json=json,headers=headers,cookies=None)
#2.重复的内容,复制进来
code=r.status_code
try:
body=r.json()
except Exception as e:
body=r.text
#内容存到字典
res=dict() #定义字典
res["code"]=code
res["body"]=body
#字典返回
return res
#3、重构get/post方法
#get
#1、定义方法
def get(self,url,**kwargs):
#**kwargs能够自动识别传入的什么,然后自动匹配相应的
#2、定义参数
#url,json,headers,cookies,method
#3、调用共公共方法
return self.requests_api(url,method="get",**kwargs)
#post
#1、定义方法
def post(self,url,**kwargs):
#**kwargs能够自动识别传入的什么,然后自动匹配相应的
#2、定义参数
#url,json,headers,cookies,method
#3、调用共公共方法
return self.requests_api(url,method="post",**kwargs)
get方法例子:
from RequestsUtil import requests_post
from
def login():
#3、定义测试数据
url="http://211.103.136.242:8064/authorizations/"
data={"username" : "python","password" : "12345678"}
#4、发送post请求
#r=requests.post(url,json=data)
r=requests_post(url,json=data)
#5、输出结果
#是json还是text,取决于返回的接口,如果不是json格式的话,使用json会报错
#print(r.json)
print(r)
def info():
#1、参数
url="http://211.103.136.242:8064/user/"
token="上一步2.1登录输出的返回值中含有token,复制过来即可"
headers={'Authorization':'JWT ' + this.token}
#2、get请求
#r=requests.get(url,headers=headers)
#requests_get(url,headers=headers)
from RequestsUtil import Request
requests=Requests()
r=requests.get(url,headers=headers)
#3、输出
#print(r.json())
print(r)
def cart():
#1、参数
url="http://211.103.136.242:8064/cart/"
data={"skiid":"3","count" :"1", "selected" :"true"}
#需要登录,所以用到headers
headers={'Authorization':'JWT ' + this.token}
#2、请求
#r=requests.post(url,json=data,headers=headers)
r=requests_post(url,json=data,headers=headers)
#3、输出
print(r,json())
print(r)
if __name__="__main__":
info()
post方法如上!