天天看點

關于Python連接配接資料庫測試的那些事

寫在最前面

大家好,我是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())
           

好了,測試你的代碼,結果如下圖

關于Python連接配接資料庫測試的那些事

祝大家測試愉快!