Sincronización automática de la base de datos del entorno de prueba de Python

Compartir tema

¿Cómo sincronizar el nivel de base de datos de la base de datos con múltiples entornos de prueba?

 

Escenarios de aplicación

Cuando hay varios conjuntos de entornos de prueba en funcionamiento, para garantizar la coherencia de la configuración básica del entorno, la estructura de la base de datos de todos los entornos de prueba debe ser coherente.

Por ejemplo: un requisito se prueba en el entorno beta1, y hay una nueva tabla sql en el orden de prueba del requisito A, y el requisito B se prueba en el entorno beta2. Dado que el requisito A se publica antes que el requisito B, es en el proceso de la prueba de requisitos B Al publicar, el código principal debe fusionarse en la rama de demanda actual (para las pruebas de integración, se puede detectar de antemano si la demanda en línea tiene un impacto en la demanda actual bajo prueba). el código se fusiona, la configuración correspondiente también debe mantenerse, de lo contrario se informará un error cuando el programa se esté ejecutando, por lo que debe actualizar el sql de la nueva tabla en el entorno beta1 A en el entorno beta2.

Debido a que cada versión y en línea realizará una actualización de sincronización a nivel de la base de datos, si solo hay dos o tres entornos de prueba, también es posible usar actualizaciones manuales. Si hay muchos entornos de prueba y el contenido de actualización de la base de datos es grande, actualizaciones manuales manuales La eficiencia será muy baja y también causará algunos errores de operación humana. En este momento, es muy importante actualizar la base de datos de forma automática y sincrónica. En términos de eficiencia y precisión, es una ventaja sobre la actualización manual.

 

Código

 1#coding:utf-8
 2import pymysql
 3
 4
 5dbDict = {"test1":"l-test1.beta.ep.tx1.test.io","test2":"l-test2.beta.ep.tx1.test.io",
 6          "test3":"l-test3.beta.ep.tx1.test.io","test4":"l-test4.beta.ep.tx1.test.io",
 7          "test5":"l-test5.beta.ep.tx1.test.io","test6":"l-test6.beta.ep.tx1.test.io"}
 8
 9#这是定义了一个连接db的类,初始化方法里建立连接,并定义了sql 的执行与查询的两个方法
10
11class 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()
16
17    def dbExcute(self,sql):
18        print ("execute sql")
19        self.cursor.execute(sql)
20        print(sql)
21        self.dbClose()
22
23    def dbSelect(self,sql):
24        print ("------------------------------------")
25        print(sql)
26        resultList = []
27        self.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]
34            resultList.append(tempDict)
35        print("---------------------打印查询结果----------------------")
36        print(resultList)
37        self.dbClose()
38        return resultList
39
40    def dbClose(self):
41        self.conn.commit()
42        self.cursor.close()
43        self.conn.close(
44
45
46def main(flag,sql):
47    dbname = "test"
48    envlist=[1, 2, 3, 4, 5, 6]
49
50    for i in envlist:
51        dbname += str(i)
52        print("*" * 20 + "正在执行的环境是:", dbname + "*" * 20)
53        test= DBUtils(dbname)
54        if(flag=="exe"):
55            test.dbExcute(sql)
56        else:
57            test.dbSelect(sql)
58
59        dbname = "test"
60
61if __name__ == "__main__":
62    sql="ALTER TABLE change_record change operatorEmail email varchar(100) NOT NULL DEFAULT '' COMMENT 'email'"
63    main("exe",sql)

 

para resumir

Como se puede ver en la parte de implementación del código, con este script de sincronización automática, cuando se actualiza la base de datos, solo se puede pasar la instrucción SQL actualizada para sincronizar automáticamente la información de la base de datos de múltiples conjuntos de entornos de prueba con un solo clic, lo cual es muy eficiente.

Bienvenido a prestar atención a la cuenta pública de [The Way of Infinite Testing], responder [Recibir recursos] Recursos de
aprendizaje de programación de Python productos secos, automatización de la interfaz de usuario de la aplicación del marco Python + Appium , automatización de la interfaz de usuario web del marco Python + Selenium , automatización de la API del marco Python + Unittest,


Los recursos y códigos se envían gratis ~
Hay un código QR de la cuenta oficial en la parte inferior del artículo, puede escanearlo en WeChat y seguirlo.

Observaciones: Mi cuenta pública personal se ha abierto oficialmente, dedicada al intercambio de tecnología de prueba, que incluye: pruebas de big data, pruebas funcionales, desarrollo de pruebas, automatización de la interfaz API, operación y mantenimiento de pruebas, pruebas de automatización de la interfaz de usuario, etc., búsqueda pública de WeChat cuenta: "Wuliang The Way of Testing", o escanee el código QR a continuación:

 ¡Presta atención y crezcamos juntos!

Supongo que te gusta

Origin blog.csdn.net/weixin_41754309/article/details/115305148
Recomendado
Clasificación