Beispiel #1
0
 def delete_datas_from_table_with_sql(self, sql):  # 用来删除指定表中的所有数据
     '''
     :param table_name: 数据库中表的名字
     :return:
     '''
     try:
         db_config = eval(ReadConfig().get_config_data(
             config_path, 'DB', 'db_config'))
         cnn = mysql.connector.connect(**db_config)  # 建立数据库连接
         cursor = cnn.cursor()  # 游标cursor
         cursor.execute(sql)  # 执行语句
         cnn.commit()  # 提交
         cursor.close()  # 关闭游标
         cnn.close()  # 关闭连接
         MyLog().info('执行数据库语句--》{}《--成功!!!'.format(sql))
     except:
         MyLog().error('执行数据库语句--》{}《--失败!!!'.format(sql))
Beispiel #2
0
 def get_datas_from_database(self, sql, state='all'):  # 读取数据
     '''
     :param sql: 需要执行的sql语句
     :param state: 查询一条数据时,state=1;查询多条数据时,state='all'
     :return: res为查询到的结果
     '''
     db_config = eval(ReadConfig().get_config_data(config_path, 'DB',
                                                   'db_config'))
     cnn = mysql.connector.connect(**db_config)  # 建立数据库连接
     cursor = cnn.cursor()  # 游标cursor
     cursor.execute(sql)  # 执行语句
     # cnn.commit()
     if state == 1:
         res = cursor.fetchone()
     else:
         res = cursor.fetchall()
     cursor.close()  # 关闭游标
     cnn.close()  # 关闭连接
     return res
Beispiel #3
0
 def get_data(self, file_path):  # 从excel中获取测试数据
     mode = eval(ReadConfig.get_config_data(dir_config.config_path, self.section, self.option))  # 读取配置文件,拿到配置文件中的字典
     test_datas = []
     for key in mode:      # 遍历字典中的key
         wb = load_workbook(file_path)
         sheet = wb[key]  # 获取到表单
         headers = []
         for i in range(1, sheet.max_column+1):   # 获取表中每一列的标题,添加到列表里面
             headers.append(sheet.cell(3, i).value)
         if mode[key] == "all":    # 如果配置文件中,表单名对应的值为all,就加载这个表单中所有的行
             for i in range(4, sheet.max_row+1):  # 从第二行开始,第一行是title
                 row_data = {}
                 for j in range(1, sheet.max_column+1):
                     row_data[headers[j-1]] = sheet.cell(i, j).value
                     row_data['sheet_name'] = key  # 在字典中加入表单名,方便在执行测试用例时调用,执行用例时,需将测试结果写回到对应的表单中
                 test_datas.append(row_data)   # 将字典添加到列表中
         else:
             for case_id in mode[key]:   # 配置文件中,表单名对应的值为一个列表,该字典为excel中用例数据对应的编号,遍历该字典,拿到用例编号
                 row_data = {}
                 for j in range(1, sheet.max_column+1):
                     row_data[headers[j-1]] = sheet.cell(case_id+3, j).value
                     row_data['sheet_name'] = key  # 在字典中加入表单名,方便在执行测试用例时调用,执行用例时,需将测试结果写回到对应的表单中
                 test_datas.append(row_data)   # 将字典添加到列表中
     return test_datas
Beispiel #4
0
    def process_game(game_button):
        while eval(ReadConfig().read_config(read_path.conf_path, 'BASE',
                                            'run_flg')):
            driver = webdriver.Firefox()
            # driver.maximize_window()
            driver.get(common_data.test_url)
            home_page = HomePage(driver)

            # 点击游戏DOTA2
            logging.info('----------开始点击DOTA2游戏按钮----------')
            # home_page.judge_dota2_button().click_dota2_button()
            home_page.judge_game_button(game_button).click_game_button(
                game_button)
            time.sleep(5)
            # home_page.click_dota2_button()
            home_page.click_game_button(game_button)
            logging.info('----------点击成功!----------')

            # 判断是否有进行中的游戏,如果有则进入游戏,没有则5分钟获取一次数据,直到有数据为止
            logging.info('----------开始进入进行中游戏----------')
            time.sleep(5)
            home_page.judge_process_game(game_button)[0].click()

            # 切换窗口
            handles = driver.window_handles
            driver.switch_to.window(handles[-1])

            # 判断是否有赛况数据,有数据则进入数据对比,没有数据则抛出异常
            game_page = GamePage(driver)
            if game_page.judge_score_detail():
                # 先判断比赛是否结束
                logging.info('----------比赛状态为{}----------'.format(
                    game_page.judge_game_finish()))
                if not game_page.judge_game_finish():
                    # 如果没有胜败图标表示比赛进行中
                    logging.info('----------开始进行数据对比----------')
                    data_change_flg = True
                    while data_change_flg:
                        game_page.compare_data()
                        # 对比完成刷新页面后,判断能否正常获取赛况数据
                        if game_page.judge_score_detail():
                            # 如果能正常获取赛况数据,判断能否有胜败方图标(比赛是否结束)
                            if game_page.judge_game_finish():
                                # 如果有胜败方图标,说明比赛结束,退出浏览器
                                data_change_flg = False
                                driver.quit()
                            else:
                                # 如果没有胜败方图标,说明比赛未结束,继续判断数据是否实时变化
                                if game_page.judge_data_change():
                                    # 如果数据有实时变化,则继续对比数据
                                    logging.info(
                                        '----------websocket数据推送断掉,刷新后已重新推送数据----------'
                                    )
                                    continue
                                else:
                                    # 如果数据没有实时变化,说明数据推送有问题,抛出异常
                                    url = driver.current_url
                                    logging.info(
                                        '----------数据推送异常,无法实时更新数据!!!----------'
                                    )
                                    SendAlarm().send_dingtalk_alarm(
                                        '数据推送异常,无法实时更新数据,地址是:{}'.format(url))
                                    driver.quit()
                        else:
                            # 如果不能获取赛况数据,抛出异常,跳出循环
                            data_change_flg = False
                else:
                    # 如果有胜败图标,表示比赛已结束
                    driver.quit()
                    logging.info('----------比赛怎么结束了???----------')