python接口自动化-token

做接口测试时,token是经常会用到的参数,(例如,我们想要加入购物车,为什么点加入购物车按钮,商品会添加进我的购物车,而不是别人的购物车呢,其实就是用token或cookie来区分每个人的,所以token或cookie就是代表个人身份的数据了)我在这里只讲token,以后有合适的项目再给大家讲cookie。

需求:个人信息查询
接口:
在这里插入图片描述
取token,编写一个登录接口,存成一个文件,名称为:public.py:

import requests
import json

def login():  #登录
	url = 'http://*****/api/login'
	param = {
			  'loginName' : 'admin',   #用户名
			  'loginPwd' : '123456'    #密码
			}
	res = requests.post(url,params=param)
	r = res.headers
	#token = r['api-token']  #先把这个注释掉,我们先把返回值的headers取出来看一看
	return (r)

print (login())

在这里插入图片描述
我做的这个项目取token的字段名称就叫api-token,具体的名称要根据不同的项目决定,不知道叫什么的话可以问开发。接下来就取消注释,直接return (token),如下

import requests
import json

def login():  #前台登录取token
	url = 'http://*****/api/login'
	param = {
			  'loginName' : 'admin',
			  'loginPwd' : '123456'
	}
	res = requests.post(url,params=param)
	r = res.headers
	token = r['api-token']   #这个api-token是因为返回值里叫这个名字,所以这里就取这个字段值
	return (token)   #这里返回的是token

#print (login())

在这里插入图片描述

以上就是取token的全过程,我们这个项目的token是在返回值的header里,也有在body里边的,如果在body里边就需要把代码中的 r = res.headers 改成 r = res.json(),然后再取字段值就可以了。
最后再调用个人信息查询接口,在这个接口里边把token传进去
编写一个用例文件test_case.py,内容如下:

import requests   
import unittest   
import sys
import io 
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8') 
sys.path.append('../')   #这句是为了调用其他包添加的环境变量,如果调用的包在默认环境变量下就不需要写了
from public import *   #引包,因为我把登录写在public里边了,想要用的话,需要引过来(可以理解为文件包含)

class Test_api(unittest.TestCase):  
	def setUp(self):  #setUp里边是测试之前的准备工作
		self.token = login()  #调用public里边的登录,并接收返回的token,把这个调用程序放在setUp里边,是为了让这句话每次运行用例的时候都生效

	def test_info(self):
		'''个人信息查询'''
		self.url = 'http://*****/api/wuser/info'
		self.header = {
						'api-token' : self.token   #传token
					  }
		self.res = requests.get(self.url,headers=self.header)
		self.r = self.res.json()
		self.assertEqual(200,self.r.get('code'))  #断言
		print (self.r)

	def tearDown(self):
		pass

if __name__=='__main__':
	unittest.main()

在这里插入图片描述
能够有返回值说明token生效了。
在这里插入图片描述
备注:这里需要注意的一点是__init__.py 这个文件是引包必须要有的,也就是说,如果我想引用public.py,那就得保证public.py是个包才能被其他文件引用,只要在public.py所在的文件夹里边创建个__init__.py文件,就说明这是个包,可以被引用。另外init左右两边是两个下划线

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值