使用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脚本了。
使用python读取配置文件并从mysql数据库中获取数据进行传参(基于Httprunner)的更多相关文章
- python制作简单excel统计报表3之将mysql数据库中的数据导入excel模板并生成统计图
python制作简单excel统计报表3之将mysql数据库中的数据导入excel模板并生成统计图 # coding=utf-8 from openpyxl import load_workbook ...
- 孤荷凌寒自学python第四十八天通用同一数据库中复制数据表函数最终完成
孤荷凌寒自学python第四十八天通用同一数据库中复制数据表函数最终完成 (完整学习过程屏幕记录视频地址在文末) 今天继续建构自感觉用起来顺手些的自定义模块和类的代码. 今天经过反复折腾,最终基本上算 ...
- 使用grabit分析mysql数据库中的数据血缘关系
使用grabit分析mysql数据库中的数据血缘关系 Grabit 是一个辅助工具,用于从数据库.GitHub 等修订系统.bitbucket 和文件系统等各种来源收集 SQL 脚本和存储过程,然后将 ...
- mysql数据库中插入数据INSERT INTO SET的优势
往mysql数据库中插入数据.以前常用 INSERT INTO 表名 (列名1,列名2…) VALUES(列值1,列值2); 如果在PHP程序中,就会写成如下示例(往商品库里增加商品) $sql = ...
- 使用sqoop将MySQL数据库中的数据导入Hbase
使用sqoop将MySQL数据库中的数据导入Hbase 前提:安装好 sqoop.hbase. 下载jbdc驱动:mysql-connector-java-5.1.10.jar 将 mysql-con ...
- Django Form 实时从数据库中获取数据
修改 models.py 添加 class UserType(models.Model): caption = models.CharField(max_length=32) 执行命令,生成数据库 p ...
- python往mysql数据库中写入数据和更新插入数据
本文链接:https://blog.csdn.net/Mr__lqy/article/details/85719603 1. 连接mysql import pymysql db = pymysql.c ...
- Solr 07 - Solr从MySQL数据库中导入数据 (Solr DIH的使用示例)
目录 1 加入数据导入处理器的jar包 2 加入数据库驱动包 3 配置solrconfig.xml文件 3.1 配置lib标签 - 加入驱动jar包 3.2 配置requestHandler标签 - ...
- php从mysql数据库中取数据
php从数据库中取数据 面向过程 <?php $server_name="localhost:3306"; //数据库服务器名称 $username="root& ...
随机推荐
- Maven Web 工程
本教程将教您如何在Eclipse中创建 Archetype为 maven-archetype-webapp的Maven项目,也就是web工程. 创建Maven工程 第一步,启动Eclipse,依次打开 ...
- vue工程中,如何查询用户访问的地理位置 + vue中的jsonp
有一个需求,就是当用户访问你们公司的网站时,需要查到这位用户的地理位置(通过电脑ip来访问) 试了很多方法,感觉使用腾讯的位置服务api最好,返回的信息最全,包括经纬度,国家城市地区等.而其他绝大多数 ...
- 论文阅读 | Tackling Adversarial Examples in QA via Answer Sentence Selection
核心思想 基于阅读理解中QA系统的样本中可能混有对抗样本的情况,在寻找答案时,首先筛选出可能包含答案的句子,再做进一步推断. 方法 Part 1 given: 段落C query Q 段落切分成句 ...
- Mysql事件调度器学习
在cassandra数据库中,有一个叫做TTL的功能,即插入一条记录时,可以指定某一字段对应的TTL值,比如30s,那么当TTL到达30s后该条记录就会被自动删除.目前MySQL并未直接提供TTL的功 ...
- Design Circular Queue
Design your implementation of the circular queue. The circular queue is a linear data structure in w ...
- Redis(1.8)Redis与mysql的数据库同步(缓存穿透与缓存雪崩)
[1]缓存穿透与缓存雪崩 [1.1]缓存和数据库间数据一致性问题 分布式环境下(单机就不用说了)非常容易出现缓存和数据库间的数据一致性问题,针对这一点的话,只能说,如果你的项目对缓存的要求是强一致性的 ...
- 小菜鸟之HTML第一课
web项目 前端网页web(人体结构) HTML负责前端网页结构 Css负责网页样式 css引入 内联样式引入 内部样式 外部样式 三种基本引入器 id选择器 类选择器 标签选择器 <!DOCT ...
- NOIP模拟赛 打铁的匠 题解
[问题描述] Mark Douglas是一名优秀的锻造师.与他优秀的锻造水平不相符,他非常穷,以至于很多好刀都因为缺少素材缺少资金无法打造. Mark把他有能力锻造的所有n种刀建成了一棵锻造树,除了第 ...
- *** 没有规则可以创建目标“test”。 停止。
在编译Linux模块时出现这个问题,在仔细检查了Makefile没有错误后,重名了了该源程序和Makefile所在文件夹的名字,与源程序名字一致,然后问题就消失了!它们的关联体现在哪啊!?
- HDU3622 Bomb Game(二分+2-SAT)
题意 给n对炸弹可以放置的位置(每个位置为一个二维平面上的点), 每次放置炸弹是时只能选择这一对中的其中一个点,每个炸弹爆炸 的范围半径都一样,控制爆炸的半径使得所有的爆炸范围都不相 交(可以相切), ...