zoukankan      html  css  js  c++  java
  • HttpRunner3.X

    一、前言

    做自动化测试的时候,有时要跟数据库有交互,经常遇到的场景有:

    • 从数据库中读取数据,并将这些数据作为接口参数使用
    • 从数据库中读取数据,并断言接口返回的数据与落表的数据是否一致

    二、文件目录框架如下

    三、创建数据库配置文件 config/config.ini

    输入自己用的数据库的相关信息即可,这里我给 user_name 赋值了一个 SQL语句,可以根据需求调整。

    [Mysql]
    user_name = select room_name from clothim where created_name="李白"
    
    [DATABASE]
    host = 192.8.0.2
    user = doud
    passwd = Oc0C&=3a
    port = 13306
    database = croom

    四、创建读取数据库配置文件 readConfig.py

    import os,codecs,configparser
    #创建读取数据库配置文件
    class ReadConfig:
        def __init__(self):
            self.cf = configparser.ConfigParser() #实例化configparser对象
            #获取当前文件夹的父目录绝对路径
            self.path = os.path.dirname(os.path.dirname(__file__))
            #获取config文件夹中的ini文件
            self.file_path = os.path.join(self.path,'config','config.ini')
            #读取ini文件
            self.cf.read(self.file_path,encoding='utf-8')
    
        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

    import pymysql
    from config.readConfig import ReadConfig
    
    #连接数据库及执行数据库文件
    mysql = ReadConfig()
    
    class MysqlDb:
        def __init__(self):
            self.host = mysql.DataBase("host")
            self.user = mysql.DataBase("user")
            self.passwd = mysql.DataBase("passwd")
            self.port = mysql.DataBase("port")
            self.database = mysql.DataBase("database")
            self.db = pymysql.connect(host=self.host,user=self.user,password=self.passwd,database=self.database,port=13306,charset="utf8")
    
        def execute(self,sql,data):
            connect = self.db
            cursor = connect.cursor()
            cursor.execute(sql % data)
            connect.commit()
    
        def execute_read(self,sql,data):
            connect = self.db
            cursor = connect.cursor()
            cursor.execute(sql % data)
            for row in cursor.fetchall():
                return row
    
        def user_name(self):
            sql = mysql.Mysql("user_name")
            data = self.execute_read(sql,())
            return data
    
        def user_code(self):
            sql = mysql.Mysql("user_code")
            data = self.execute_read(sql,())
            return data

    六、在 debugtalk.py(必须是这里)中写一个查询数据 sql 的方法

    import time
    
    from httprunner import __version__
    from mysqlDB import MysqlDb
    
    #定义查询数据 sql 的方法
    mysqlDB = MysqlDb()
    
    def get_user_name():
        user_name = mysqlDB.user_name()
        return user_name[0]

    七、在测试用例中调用该方法

    用 $ 符号即可

    "username": "${get_user_name()}"

     八、运行脚本即可

  • 相关阅读:
    Haproxy的安装与配置
    keepalived工作原理和配置说明
    服务器集群与负载均衡基础知识
    Linux磁盘分区与格式化
    第12章 在.NET中操作XML
    第16章 多线程
    第10章 网络编程
    第8章 流和序列化
    关于引用类型作为参数加上ref与不加ref的区别
    第3章 C#中的委托和事件
  • 原文地址:https://www.cnblogs.com/Chilam007/p/15161517.html
Copyright © 2011-2022 走看看