基于python的接口自动化测试—Requests篇


一、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方法如上!

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值