From e7da81ca7a20c5e44e655f70c23cb8237b6d2612 Mon Sep 17 00:00:00 2001 From: halliday Date: Mon, 11 Dec 2023 20:17:26 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Project/task3/Resources/KeyWord.robot | 34 ++++++ .../task3/Script/{.gitkeep => __init__.py} | 0 Project/task3/Script/jdbc-driver/.gitkeep | 0 Project/task3/Script/mssqlTest.py | 115 ++++++++++++++++++ Project/task3/TestSuite/Project3.robot | 6 +- Project/task3/config/myConfig.py | 2 +- 6 files changed, 153 insertions(+), 4 deletions(-) rename Project/task3/Script/{.gitkeep => __init__.py} (100%) create mode 100644 Project/task3/Script/jdbc-driver/.gitkeep create mode 100644 Project/task3/Script/mssqlTest.py diff --git a/Project/task3/Resources/KeyWord.robot b/Project/task3/Resources/KeyWord.robot index 6a547ec..b84c950 100644 --- a/Project/task3/Resources/KeyWord.robot +++ b/Project/task3/Resources/KeyWord.robot @@ -4,6 +4,7 @@ Resource Element.robot Resource Common.robot Variables ../config/myConfig.py Library DateTime +Library ../Script/mssqlTest.py *** Keywords *** 登录黑方 @@ -148,4 +149,37 @@ Library DateTime Log ${recoveryname} 作业校验 ${recoveryname} +初始化数据库 + # 创建数据库 + mssqlTest.Create Database + # 创建表 + mssqlTest.Create Table + # 插入数据 + mssqlTest.Insert Data Table + # 查询插入的结果 + ${select_result}= mssqlTest.Get Insert Res + Log 查询到的结果是:${select_result} + Set Global Variable ${first_result} ${select_result} +删除表确认该表不存在 + # 先确认表是否存在 + ${table_status1}= mssqlTest.Check Table Exists + Should Be True ${table_status1} 要删除的表不存在 + Log TABLE_TEST表存在,开始做删除表操作 + mssqlTest.Drop Table + # 删除后检查 + ${table_status2}= mssqlTest.Check Table Exists + Should Not Be True ${table_status2} 删除失败,删除的表还能查询到 + Log TABLE_TEST已删除 + +校验恢复结果 + # 先确认表是否存在 + ${table_status}= mssqlTest.Check Table Exists + Should Be True ${table_status} 要检查的表不存在,请确认恢复结果 + Log 表已经恢复成功,开始检查表结果 + # 查询插入的结果 + ${select_result}= mssqlTest.Get Insert Res + Log 查询到的结果是:${select_result} + # 将其与之前的结果做对比 + Should Be Equal As Strings ${first_result} ${select_result} 恢复前后的结果不匹配 + Log 恢复成功,恢复结果与预期一致 diff --git a/Project/task3/Script/.gitkeep b/Project/task3/Script/__init__.py similarity index 100% rename from Project/task3/Script/.gitkeep rename to Project/task3/Script/__init__.py diff --git a/Project/task3/Script/jdbc-driver/.gitkeep b/Project/task3/Script/jdbc-driver/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/Project/task3/Script/mssqlTest.py b/Project/task3/Script/mssqlTest.py new file mode 100644 index 0000000..0d1401f --- /dev/null +++ b/Project/task3/Script/mssqlTest.py @@ -0,0 +1,115 @@ +# encoding=utf-8 +from datetime import datetime +from pathlib import Path + +import jaydebeapi + + +class mssqlTest(object): + def __init__(self): + # 公共的 + path = Path(__file__).parent + # 数据库连接相关的参数 + driver_name = "com.microsoft.sqlserver.jdbc.SQLServerDriver" + jdbc_url = "jdbc:sqlserver://10.10.13.249:1433" + OAuth = ["sa", "unary@2008"] + driver_jar_path = path / "jdbc-driver" / "mssql-jdbc-9.2.0.jre8.jar" + + # 连接数据库 + self.conn = jaydebeapi.connect(driver_name, + jdbc_url, + OAuth, + str(driver_jar_path)) + + + # 执行sql + def execute_sql(self, sql): + with self.conn.cursor() as curs: + curs.execute(sql) + + + # 创建库 + def create_database(self): + print("start create databases...") + sql_string = "CREATE DATABASE UNATEST" + try: + self.execute_sql(sql_string) + except: + self.drop_database() + print("start try create databases again") + self.execute_sql(sql_string) + print("CREATE DATABASE UNATEST sucess!") + + #创建表 + def create_table(self): + print("start create table...") + sql_string = "create table UNATEST.dbo.TABLE_TEST(test char(15))" + try: + self.execute_sql(sql_string) + except: + self.drop_table() + print("start try create table TABLE_TEST again") + self.execute_sql(sql_string) + print("CREATE create TABLE_TEST sucess!") + + + # 插入数据 + def insert_data_table(self): + print("start insert into UNATEST.dbo.TABLE_TEST") + # 插入当前的时间 + actime_time = datetime.now().strftime('%Y%m%d%H%M%S') + sql_string ="INSERT INTO UNATEST.dbo.TABLE_TEST (test) VALUES(N'"+ actime_time +"')" + print("insert data is : " + actime_time) + self.execute_sql(sql_string) + + + + # 删除表 + def drop_table(self): + print("start drop table TABLE_TEST...") + sql_string = "DROP table UNATEST.dbo.TABLE_TEST" + try: + self.execute_sql(sql_string) + except: + print("TABLE_TEST already drop.") + + + # 删除库 + def drop_database(self): + print("start drop databases...") + sql_string = "DROP DATABASE UNATEST" + try: + self.execute_sql(sql_string) + except: + print("databases already drop.") + + + # 获取插入的结果 + def get_insert_res(self): + sql_string = "select * from UNATEST.dbo.TABLE_TEST" + with self.conn.cursor() as select: + select.execute(sql_string) + res = select.fetchall() + print(res) + # 将第一个结果返回 + return res[0] + + + # 检查表是否存在 + def check_table_exists(self): + sql_string = "select * from UNATEST.dbo.sysObjects WHERE name='TABLE_TEST'" + with self.conn.cursor() as select: + select.execute(sql_string) + res = select.fetchall() + # 根据结果数据量来判断表是否存在 + if len(res) == 1: + exists = True + else: + exists = False + return exists + + + # 关闭连接 + def close_conn(self): + self.conn.close() + diff --git a/Project/task3/TestSuite/Project3.robot b/Project/task3/TestSuite/Project3.robot index 4ac416f..b381581 100644 --- a/Project/task3/TestSuite/Project3.robot +++ b/Project/task3/TestSuite/Project3.robot @@ -7,10 +7,10 @@ Resource ../Resources/Common.robot *** Test Cases *** Sqlserver副本备份恢复 [Setup] 登录黑方 # 登录黑方 - # 初始化数据库 + 初始化数据库 创建Sqlserver副本备份策略 执行备份任务并校验 - # 删除表确认该表不存在 + 删除表确认该表不存在 创建恢复任务并校验 - # 校验恢复结果 + 校验恢复结果 [Teardown] Close Browser # Close Browser diff --git a/Project/task3/config/myConfig.py b/Project/task3/config/myConfig.py index 5879522..2aaeeb2 100644 --- a/Project/task3/config/myConfig.py +++ b/Project/task3/config/myConfig.py @@ -18,5 +18,5 @@ PolicyName = "AutoTest-SQLServerCDM-Backup-" + actime_time # 代理名称 hostname = "SqlserverCDM" # 过滤关键词 -keyFilter = "test1" +keyFilter = "test" recTargetPath='C:\\data'