Unittest+Python接口自动化测试如何进行token关联?
业务背景
有些业务在做接口自动化的时候,接口头需要传入token参数,那么如何做呢?下边是整理的内容,当然也借鉴了网友的一些资料。
1、先封装对json格式的数据存储,主要是用来保存和读取获取到的token值
operation_json.py
#coding:utf-8
import json
class OperetionJson:
def __init__(self,file_path=None):
if file_path == None:
self.file_path = '../case/user.json' # 获取的token需要保存的地方
else:
self.file_path = file_path
self.data = self.read_data()
#读取json文件
def read_data(self):
with open(self.file_path, 'r', encoding='utf-8') as fp:
data1 = fp.read()
if len(data1) > 0:
data = json.loads(data1)
else:
data = {}
return data
#根据关键字获取数据
def get_data(self,id):
print(type(self.data))
return self.data[id]
#写json
def write_data(self,data):
with open('../case/token.json','w') as fp:
fp.truncate() # 先清空之前的数据,再写入,这样每次登录的token都是不一样的
fp.write(json.dumps(data))
if __name__ == '__main__':
opjson = OperetionJson()
#print(opjson.get_data('shop'))
data = {
"user":"zhang",
"passwd":123456
}
opjson.write_data(data)
2、封装如何获取token脚本
get_token.py
import json
import requests
from common.operation_json import OperetionJson
class OperationHeader:
def __init__(self, response):
self.response = json.loads(response)
def get_response_token(self):
'''
获取登录返回的token
'''
token = {"data":{"token":self.response['data']['token']}}
#token = {"token": self.response['data']['token']}
return token
# 把数据写入文件
def write_token(self):
op_json = OperetionJson()
op_json.write_data(self.get_response_token())
def get_response_msg(self):
reponse_msg = {"msg":self.response['msg']}
#print("reponse_msg:", reponse_msg)
return reponse_msg
if __name__ == '__main__':
# 一个登录接口数据,仅供参考
url = "http://192.168.1.117/api/user/login"
data = {
"username": "zhang",
"password": "123456",
"deviceId": 0
}
res = requests.post(url,data).json()
res1 = json.dumps(res)
print(type(res1))
op = OperationHeader(res1)
print(op.get_response_msg())
3、在用例管理里边进行调用
部分代码:test_interface.py
class Test_api(unittest.TestCase):
@classmethod
def setUpClass(cls):
# 登录获取token
cls.s = requests.session() # 创建会话
url = "http://192.168.1.102/api/user/login"
headers = {"content-type":"application/json","Connection":"keep-alive"}
data = {"username":"zhang","password":"123456","deviceId":0}
res = requests.post(url=url, json=data, headers=headers).json()
res1 = json.dumps(res)
#print(type(res1))
op = OperationHeader(res1)
op.write_token()
writeexcel.copy_excel(testxlsx, reportxlsx) # 复制xlsx
1 声望
0 粉丝
推荐阅读
WindowsGUI自动化测试框架搭建之需求整理、详细设计和框架设计
1 需求整理1.1 实现目的基于CS架构,模拟用户(鼠标、键盘)操作,达到快速、重复执行测试用例;便于回归测试,快速覆盖主线用例或功能;线上或线下巡检测试,结合持续集成,及时发现运行环境存在的问题;提升个...
虫无涯阅读 397
又一款眼前一亮的Linux终端工具!
今天给大家介绍一款最近发现的功能十分强大,颜值非常高的一款终端工具。这个神器我是在其他公众号文章上看到的,但他们都没把它的强大之处介绍明白,所以我自己体验一波后,再向大家分享自己的体验。
良许赞 6阅读 1.8k
FastAPI性能碾压Flask?
不止一次的听过,FastAPI性能碾压Flask,直追Golang,不过一直没有测试过,今天闲着没事测试一下看看结果。不知道是哪里出了问题,结果大跌眼镜。
二毛erma0赞 2阅读 10.2k评论 3
Python之如何优雅的重试
为了避免偶尔的网络连接失败,需要加上重试机制,那么最简单的形式就是在对应的代码片段加一个循环,循环体里使用异常捕获,连接成功时退出循环,否则就重复执行相关逻辑,此时修改之后的函数f如下
Harpsichord1207赞 3阅读 7.3k
Linux终端居然也可以做文件浏览器?
大家好,我是良许。在抖音上做直播已经整整 5 个月了,我很自豪我一路坚持到了现在【笑脸】最近我在做直播的时候,也开始学习鱼皮大佬,直播写代码。当然我不懂 Java 后端,因此就写写自己擅长的 Shell 脚本。但...
良许赞 1阅读 2.1k
基于 EKS Fargate 搭建微服务性能分析系统
近期 Amazon Fargate 在中国区正式落地,因 Fargate 使用 Serverless 架构,更加适合对性能要求不敏感的服务使用,Pyroscope 是一款基于 Golang 开发的应用程序性能分析工具,Pyroscope 的服务端为无状态服务且性...
亚马逊云开发者阅读 7.8k
ChatGPT的开源平替,终于来了!
最近这段时间,一个号称全球最大ChatGPT开源平替项目Open Assistant引起了大家的注意。这不最近还登上了GitHub的Trending热榜。[链接]根据官方的介绍,Open Assistant也是一个对话式的大型语言模型项目,可以理解...
CodeSheep赞 2阅读 1.1k
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。