Sincronização automática do banco de dados do ambiente de teste Python

Compartilhar tópico

Como sincronizar o nível do banco de dados de linha de base com vários ambientes de teste?

 

Cenários de aplicação

Quando há vários conjuntos de ambientes de teste em funcionamento, para garantir a consistência da configuração básica do ambiente, a estrutura do banco de dados de todos os ambientes de teste precisa ser consistente.

Por exemplo: Um requisito é testado no ambiente beta1 e há uma nova tabela sql no pedido de teste de requisito A e o requisito B é testado no ambiente beta 2. Como o requisito A é lançado antes do requisito B, ele é no processo de teste de requisito B Ao publicar, o código principal precisa ser mesclado no ramo de demanda atual (para teste de integração, pode ser detectado com antecedência se a demanda online tem um impacto sobre a demanda atual em teste). o código é mesclado, a configuração correspondente também deve ser mantida, caso contrário, um erro será relatado quando o programa estiver em execução, então você precisa atualizar o sql da nova tabela no ambiente beta1 A no ambiente beta2.

Como cada versão e online farão uma atualização de sincronização no nível do banco de dados, se houver apenas dois ou três ambientes de teste, também é possível usar atualizações manuais. Se houver muitos ambientes de teste e o conteúdo de atualização do banco de dados for grande, atualizações manuais manuais ainda são usados. A eficiência será muito baixa e também causará alguns erros de operação humana. Neste momento, é muito importante atualizar o banco de dados de forma automática e síncrona. Em termos de eficiência e precisão, é uma vitória sobre a atualização 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)

 

Resumindo

Como pode ser visto na parte de implementação do código, com este script de sincronização automática, quando o banco de dados é atualizado, apenas a instrução sql atualizada pode ser passada para sincronizar automaticamente as informações do banco de dados de vários conjuntos de ambientes de teste com um clique, o que é muito eficiente.

Bem-vindo a prestar atenção à conta pública [The Way of Infinite Testing], responder [Receber recursos] Recursos de
aprendizagem de programação Python
, automação de IU do APP da estrutura Python + Appium, Automação
da IU da Web da estrutura Python + Selenium
, automação da API da estrutura Python + Unittest,

Recursos e códigos são enviados gratuitamente ~
Há um código QR da conta oficial no final do artigo, você pode digitalizá-lo no WeChat e segui-lo.

Observações: Minha conta pública pessoal foi oficialmente aberta, dedicada ao compartilhamento de tecnologia de teste, incluindo: teste de big data, teste funcional, desenvolvimento de teste, automação de interface de API, operação e manutenção de teste, teste de automação de IU, etc., público de pesquisa do WeChat conta: "Wuliang The Way of Testing" ou digitalize o código QR abaixo:

 Dê atenção e vamos crescer juntos!

Acho que você gosta

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