使用python读取配置文件并从mysql数据库中获取数据进行传参(基于Httprunner)
最近在使用httprunner进行接口测试,在传参时,用到了三种方法:(1)从csv文件中获取;(2)在config中声名然后进行引用;(3)从函数中获取。在测试过程中,往往有些参数是需要从数据库中获取的,然后考虑到Httprunner提供的debugtalk.py插件,决定试试编写一个从数据库读取值的方法,在经过调试后,最后终于成功了,今天在这里记录下。
连接mysql数据库使用的是python的MySQLdb库,读取配置文件使用的是configparser库。debugtalk.py同级目录下包含文件有:
(1)mysqlDB.py
(2)readConfig.py
(3)config.ini
分别内容如下
一、配置文件config.ini内容如下:
[Mysql] user_id = select id from user where name="root" [DATABASE] host = x.x.x.x user = test passwd = 123456 port = 3306 database = rbac
二、readConfig.py(读取config.ini)
import os import codecs import configparser proDir = os.path.split(os.path.realpath(__file__))[0] configPath = os.path.join(proDir, "config.ini") print configPath class ReadConfig: def __init__(self): fd = open(configPath) data = fd.read() # remove BOM if data[:3] == codecs.BOM_UTF8: data = data[3:] file = codecs.open(configPath, "w") file.write(data) file.close() fd.close() self.cf = configparser.ConfigParser() self.cf.read(configPath) def Mysql(self, name): value = self.cf.get("Mysql", name) return value def Database(self, name): value = self.cf.get("DATABASE", name) return value
三、mysqlDB.py
# -*- coding:utf-8 -*- import MySQLdb from readConfig import ReadConfig mysql = ReadConfig() #db = MySQLdb.connect(host,user,passwd,database,charset="utf8") class MysqlDb: def __init__(self): self.host = mysql.Database("host") self.user = mysql.Database("user") self.passwd = mysql.Database("passwd") self.database = mysql.Database("database") self.db = MySQLdb.connect(self.host,self.user,self.passwd,self.database,charset="utf8") def user_id(self): cursor = self.db.cursor() sql = mysql.Mysql("user_id") cursor.execute(sql) #db.commit()提交到数据库执行 data = cursor.fetchone() #cursor return data
四、debugtalk.py(提供给httprunnertest函数)
# -*- coding:utf-8 from mysqlDB import MysqlDb test = MysqlDb() def UserId(): User_Id = test.user_id() return int(User_Id[0])
五.在test.yml中引用
- config: name: 'dashboard' request: variables: - user_id: ${UserId()}
然后就可以跑test脚本了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现