寫在最前面
大家好,我是sesame,一個普通的測試攻城獅,做過幾年測試經理,最近一兩年才開始學習、摸索自動化測試,是以如果有錯誤還請大家多多的批評指正。
為什麼要做連接配接資料庫的自動化測試
其實說起來就是因為最近換了工作(最近工作太太太太……難找了)。剛到新公司,信心滿滿,躊躇滿志,希望把學到的自動化知識和管理經驗帶到新的工作中,但是,剛來就被配置設定了一個任務,那就是計算公司使用者的返傭比例工作。由于剛來,是以對返傭比例不熟悉,再加上計算邏輯複雜,遲遲沒有動手寫測試代碼,而是,每天跟這資料組的同僚一起,熟悉返傭計算邏輯。在熟悉邏輯後,我又發現如果想要驗證程式的返傭金額是否正确,就需要連接配接資料庫,因為,程式會把返傭金額直接寫入資料庫。我需要從資料庫中擷取相應的使用者資訊,再查到返傭金額,對比資料同僚提供的客戶資訊。其實,連接配接資料庫對Python來說不算什麼,畢竟Python是萬用神器,可我們公司的資料庫需要SSH連接配接,那就需要連接配接跳闆機,結果我幾經周折終于連上了資料庫。好了,我們來看看代碼吧
普通連接配接資料庫
一開始我不會使用連接配接SSH的方法,是以想了一個笨辦法,那就是先在本地建立一個資料庫,請開發同學把線上資料導出,然後我再導入本地,之後讓前端測試同學下單(系統會自動調用返傭接口并将資料落盤),再去找開發同學把資料導出成sql語句,我再把更新的資料導入到本地。經過這麼一番折騰後才正常測試,說這麼多事為了大家以後遇到這種情況,不要再向我一樣踩這個坑。上代碼,上代碼……
import os
import pymysql
import traceback
# 整個項目根目錄的絕對路勁
baseDir = os.path.dirname(os.path.dirname(__file__))
# 資料庫配置檔案相對于工程根目錄的相對路徑
config_filePath = baseDir + "\\public\\db_config.ini"
# 打開資料庫連接配接
db = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='[email protected]', db='test')
# 使用 cursor() 方法建立一個遊标對象 cursor
cursor = db.cursor()
#cursor.execute("SELECT VERSION()")
# 使用 fetchone() 方法擷取單條資料.
#data = cursor.fetchone()
#print("Database version : %s " % data)
看本地連接配接就這麼簡單,那麼我們來看看SSH如何建立連接配接
資料庫SSH連接配接
首先,你的python要安裝兩個包:sshtunnel和paramiko
import pymysql, paramiko
from sshtunnel import SSHTunnelForwarder
with SSHTunnelForwarder(
('11.11.11.111', 22), # 這裡的IP位址是在連接配接資訊裡顯示的SSH主機名或IP位址
ssh_username="tianchuan", # 這裡是運維給你的使用者名,而不是資料庫的使用者名
ssh_pkey="e:\\zhuom\\tianchuan_rsa", # 這裡是運維給你的公鑰檔案存放位址
remote_bind_address=('跳闆機域名', 3306)) as server:
conn = pymysql.connect(
host='127.0.0.1',
port=server.local_bind_port,
user='youhaodongxi',
passwd='資料庫密碼',
db='youhaodongxi')
cur = conn.cursor()
cur.execute("show databases")
print(cur.fetchall())
好了,測試你的代碼,結果如下圖
祝大家測試愉快!