Python 之測試環境db自動同步

2022-07-20 17:54:10 字數 3136 閱讀 7214

分享主題

多套測試環境,如何做基線的資料庫級別的同步更新?

應用場景

工作中測試環境有多套時,為保證基礎環境配置的一致性,就需要所有測試環境的資料庫結構保持一致。

例如:a需求在 beta1 環境進行測試,且a需求提測單中有新增表的 sql,b需求在 beta2 環境進行測試,由於a需求比b需求先發布上線,此時在b需求測試過程中發布時需要將主幹的**合併到當前需求分支(整合測試的需要,可以提前檢測出已上線的需求是否對當前在測的需求有影響),**合併後對應的相關配置也得跟上,否則程式執行時會報錯,所以就需要在 beta2 環境更新 beta1 環境a需求新增表的sql。

因為每一次的發布上線都會做資料庫級別的同步更新,如果只是兩、三個測試環境,使用人工來手動更新也是可以的,如果測試環境多且資料庫更新的內容量大,依然使用人工手動更新,效率就會十分低下,同時也會造成一些人為操作的錯誤。這時自動化同步更新資料庫就顯得猶為重要了。在效率和正確率上都是完勝手工更新的。

**實現

1#

coding:utf-8

2import

pymysql

3 45dbdict = 

8 9#

這是定義了乙個連線db的類,初始化方法裡建立連線,並定義了sql 的執行與查詢的兩個方法

1011

class

dbutils():

12    def

__init__

(self,test):

13        print

(dbdict.get(test))

14        self.conn = pymysql.connect(dbdict.get(test), "

root

", "

123456")

15        self.cursor =self.conn.cursor()

1617    def

dbexcute(self,sql):

18        print ("

execute sql")

19self.cursor.execute(sql)

20        print

(sql)

21self.dbclose()

2223    def

dbselect(self,sql):

24        print ("

------------------------------------")

25        print

(sql)

26        resultlist =

27self.cursor.execute(sql)

28        result =self.cursor.fetchall()

29        columns =self.cursor.description

30        for val in

result:

31            tempdict ={}

32            for clonum in

range(len(columns)):

33                tempdict[str(columns[clonum][0])] =val[clonum]

35        print("

---------------------列印查詢結果----------------------")

36        print

(resultlist)

37self.dbclose()

38        return

resultlist

3940    def

dbclose(self):

41self.conn.commit()

42self.cursor.close()

43self.conn.close(

444546

defmain(flag,sql):

47    dbname = "

test

"48    envlist=[1, 2, 3, 4, 5, 6]

4950    for i in

envlist:

51        dbname +=str(i)

52        print("

*" * 20 + "

正在執行的環境是:

", dbname + "

*" * 20)

53        test=dbutils(dbname)

54        if(flag=="

exe"

):55test.dbexcute(sql)

56        else

:57test.dbselect(sql)

5859        dbname = "

test

"6061

if__name__ == "

__main__":

62    sql="

alter table change_record change operatoremail email varchar(100) not null default '' comment 'email'

"63    main("

exe",sql)

總結由**實現部分可以看出,有了這個自動同步的自動化指令碼,在資料庫更新時,只需要傳入更新的 sql 語句就可一鍵自動同步多套測試環境的資料庫資訊了,十分高效。

python程式設計學習資源乾貨、

python+selenium框架web的ui自動化、

python+unittest框架api自動化、

資源和** 免費送啦~

新增關注,讓我們一起共同成長!

自動化測試之軟體測試和測試環境

二 軟體測試和測試環境 三 資料的形式與數制 軟體是程式 資料 文件的集合。程式 由程式語言 c c c python等高階語言程式設計而成 資料 使用檔案或者資料庫來儲存檔案 文件 安裝文件 說明文件等等。按照軟體的功能可以分為三大類 支援軟體 按照軟體的功能可以分為兩大類 b s軟體 brows...

Python自動化測試環境搭建

1 安裝python 去python官網下 2 安裝setuptools與pip btw,在最新python安裝包裡已經整合了pip,要是在python安裝目錄 d python python37 scripts下有pip.exe或pip3.exe 可以不用自己裝pip了。怎麼驗證是否成功裝了pip...

python爬蟲之MongoDB測試環境安裝

一.二.安裝 1 設定mongodb目錄 root vm13 version 2.4.11 connecting to dbname welcome to the mongodb shell.for interactive help,type help for more comprehensive ...