最近在使用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)的更多相关文章

  1. python制作简单excel统计报表3之将mysql数据库中的数据导入excel模板并生成统计图

    python制作简单excel统计报表3之将mysql数据库中的数据导入excel模板并生成统计图 # coding=utf-8 from openpyxl import load_workbook ...

  2. 孤荷凌寒自学python第四十八天通用同一数据库中复制数据表函数最终完成

    孤荷凌寒自学python第四十八天通用同一数据库中复制数据表函数最终完成 (完整学习过程屏幕记录视频地址在文末) 今天继续建构自感觉用起来顺手些的自定义模块和类的代码. 今天经过反复折腾,最终基本上算 ...

  3. 使用grabit分析mysql数据库中的数据血缘关系

    使用grabit分析mysql数据库中的数据血缘关系 Grabit 是一个辅助工具,用于从数据库.GitHub 等修订系统.bitbucket 和文件系统等各种来源收集 SQL 脚本和存储过程,然后将 ...

  4. mysql数据库中插入数据INSERT INTO SET的优势

    往mysql数据库中插入数据.以前常用 INSERT INTO 表名 (列名1,列名2…) VALUES(列值1,列值2); 如果在PHP程序中,就会写成如下示例(往商品库里增加商品) $sql = ...

  5. 使用sqoop将MySQL数据库中的数据导入Hbase

    使用sqoop将MySQL数据库中的数据导入Hbase 前提:安装好 sqoop.hbase. 下载jbdc驱动:mysql-connector-java-5.1.10.jar 将 mysql-con ...

  6. Django Form 实时从数据库中获取数据

    修改 models.py 添加 class UserType(models.Model): caption = models.CharField(max_length=32) 执行命令,生成数据库 p ...

  7. python往mysql数据库中写入数据和更新插入数据

    本文链接:https://blog.csdn.net/Mr__lqy/article/details/85719603 1. 连接mysql import pymysql db = pymysql.c ...

  8. Solr 07 - Solr从MySQL数据库中导入数据 (Solr DIH的使用示例)

    目录 1 加入数据导入处理器的jar包 2 加入数据库驱动包 3 配置solrconfig.xml文件 3.1 配置lib标签 - 加入驱动jar包 3.2 配置requestHandler标签 - ...

  9. php从mysql数据库中取数据

    php从数据库中取数据  面向过程 <?php $server_name="localhost:3306"; //数据库服务器名称 $username="root& ...

随机推荐

  1. 一个提高照片质量的网站和一个改变照片DPI的方法

    相信很多童鞋都有遇到过,碰到一张很喜欢的图片,想用来做背景什么的,蛋似--因为画质太AV了怕引起误会,所以不敢使用!很气--!! 这时大神就会跳出来说,画质不好?PS是用来吃si的么! 我:我才不会用 ...

  2. JS、JQUERY 获取浏览器和屏幕各种高度宽度

    好长时间没有更新博客了... 把我最近积累的一点知识点放上博客,以后以备不需之要,也给大家整理一下.. Javascript: IE中:document.body.clientWidth ==> ...

  3. jstat 命令

    NAME jstat - Monitors Java Virtual Machine (JVM) statistics. This command is experimental and unsupp ...

  4. SpringBoot整合MyBatis完成添加用户

    怎么创建项目就不说了,可以参考:https://www.cnblogs.com/braveym/p/11321559.html 打开本地的mysql数据库,创建表 CREATE TABLE `user ...

  5. DOS ftp

    C:\>ftp /? 将文件传送到运行 FTP 服务器服务(经常称为后台程序)的计算机以及将文件从该计算机传出.可以交互使用 Ftp. FTP [-v] [-d] [-i] [-n] [-g] ...

  6. oracle -- 查询执行计划,判读查询语句优劣

    以oracle的scott账户:找到员工表中薪水大于本部门平均薪水的员工为例 多表查询方式: select e.empno, e.ename, e.sal, d.avgsal from emp e, ...

  7. acm java入门(转载)

    ACM中java的使用 http://www.cnblogs.com/XBWer/archive/2012/06/24/2560532.html 这里指的java速成,只限于java语法,包括输入输出 ...

  8. 简易计算器-leetcode

    今天,开始在leetcode上面开始做题,第一个题目是: Implement a basic calculator to evaluate a simple expression string. Th ...

  9. tensorflow零起点快速入门(5) --强化学习摘录截图

    tf.random_normal_initializer tf的GraphKeys用法 tf.reduce_mean tf.squared_difference 非tf中的zip,python的zip ...

  10. 反射获取config实体类属性并赋值

    /// <summary> /// 将实体类存入config /// </summary> /// <param name="enity">&l ...