一、前言
做自動化測試的時候,有時要跟數據庫有交互,經常遇到的場景有:
- 從數據庫中讀取數據,並將這些數據作為接口參數使用
- 從數據庫中讀取數據,並斷言接口返回的數據與落表的數據是否一致
二、文件目錄框架如下
三、創建數據庫配置文件 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()}"
八、運行腳本即可