def domysql(self,query,flag=1): """ query: sql 查询语句 flag: 标志 1 查询单条数据 2查询多条数据 """ #根据配置文件获取接口·数据库连接信息 db_config = eval(ReadConfig(project_path.conf_path).get_str("SQL","db_config")) cnn = connector.connect(**db_config) # 建立一个连接 字典作为关键字参数不需要加两个星号 # 获取游标 获取操作数据库的权限 cursor = cnn.cursor() #这里是传入的数据库语句 cursor.execute(query) # 获取并打印结果 fetchone 获取单行数据 if flag==1: res = cursor.fetchone() # 如果单行的和多行的数据一块查,根据光标位置读取,返回的值是元祖 else: res = cursor.fetchall() # 返回的是列表嵌套元组 return res
def __init__(self): #日志收集器的名字 self.logger_name =ReadConfig(project_path.conf_path).get_str("My_log","logger_name") #日志收集器的等级 self.logger_level =ReadConfig(project_path.conf_path).get_data("My_log","logger_level") #输出到输出台日志等级 self.logger_console = ReadConfig(project_path.conf_path).get_data("My_log", "console") #输出到输出泰德日志等级 self.logger_formatters = ReadConfig(project_path.conf_path).get_data("My_log", "formatter") #创建的日志文件名 self.file_name = ReadConfig(project_path.conf_path).get_data("My_log", "file_name") #创建的日志文件等级 self.file_level = ReadConfig(project_path.conf_path).get_data("My_log", "file_level")
def read_data(self, section): '''从excle读取数据,有返回值''' #从配置文件里面控制读取那些用例 case_id = ReadConfig(project_path.conf_path).get_data( section, 'case_id') #section是配置里面的片段名,可以根据你的指定来测试具体的用例 try: wb = load_workbook(self.file_name) #打开excle工作簿 global sheet #声明sheet为全局变量 sheet = wb[self.sheet_name] #定位表单 except Exception as e: print('发生错误{}'.format(e)) #每一行数据要在一起[]{} #每一行数据存到一个空间里 #开始读数据 tel = self.get_tel() test_data = [] #存放所有数据 for i in range(2, sheet.max_row + 1): row_data = {} #存放每一行的数据 row_data['CaseId'] = sheet.cell(i, 1).value row_data['Module'] = sheet.cell(i, 2).value row_data['Title'] = sheet.cell(i, 3).value row_data['Url'] = sheet.cell(i, 4).value row_data['Method'] = sheet.cell(i, 5).value if sheet.cell(i, 6).value.find('tel') != -1: #注意find这个方法的使用以及返回值 row_data['Params'] = sheet.cell(i, 6).value.replace( 'tel', str(tel)) self.update_tel(int(tel) + 1) #注意 这里的tel获取的是字符串类型 else: row_data['Params'] = sheet.cell(i, 6).value row_data['Sql'] = sheet.cell(i, 7).value row_data['ExpectedResult'] = sheet.cell(i, 8).value test_data.append(row_data) #把每一行的数据放到一个列表 wb.close() #完成用例的可配置化 final_data = [] #空列表 储存最终的测试用例数据 if case_id == 'all': #如果case_id==all,那就获取所有测试用例 final_data = test_data #把测试用例赋值给final_data这个变量 else: #否则,如果是列表,那就获取列表里面指定id的用例数据 for i in case_id: final_data.append(test_data[i - 1]) return final_data
def read_data(self, section): #section 配置文件里面的片段名 可以根据你的指定来执行具体的用例 '''从Excel读取数据,有返回值''' case_id = ReadConfig(project_path.conf_path).get_data( section, 'case_id') wb = load_workbook(self.file_name) sheet = wb[self.sheet_name] # 唯一的要求是什么?每一行数据要在一起{} [] () # 如何把每一行的数据存在一个空间里面去?[] # 开始读取数据 # 获取存在Excel里面的手机号码 tel = self.get_tel() #自己传递表单进来 test_data = [] for i in range(2, sheet.max_row + 1): row_data = {} row_data['CaseId'] = sheet.cell(i, 1).value row_data['Module'] = sheet.cell(i, 2).value row_data['Title'] = sheet.cell(i, 3).value row_data['Url'] = sheet.cell(i, 4).value row_data['Method'] = sheet.cell(i, 5).value if sheet.cell( i, 6).value.find('tel') != -1: #注意这个方法的使用以及返回值 也可以用成员运算符 row_data['Params'] = sheet.cell(i, 6).value.replace( 'tel', str(tel)) #替换值tel self.updata_tel(int(tel) + 1) else: #如果没有tel这个子字符串 就不需要去替换了 row_data['Params'] = sheet.cell(i, 6).value row_data['sql'] = sheet.cell(i, 7).value #加上去的sql语句 row_data['ExpectedResult'] = sheet.cell(i, 8).value test_data.append(row_data) wb.close() final_data = [] # 空列表 存储最终的测试用例数据 if case_id == 'all': # 如果case_id==all 那就获取所有的用例数据 final_data = test_data # 把测试用例赋值给final_data这个变量 else: # 否则 如果是列表 那就获取列表里面指定id的用例数据 for i in case_id: # 遍历case_id 里面的值 final_data.append(test_data[i - 1]) # ? 对应关系?? return final_data
import re from API_5.common.read_config import ReadConfig from API_5.common import project_path config = ReadConfig(project_path.conf_path) class GetData: '''可以动态的进行增删改的操作''' COOKIES = None LOAN_ID = None normal_user = config.get_str("data", "normal_user") normal_pwd = config.get_str("data", "normal_pwd") def raplace(target): p2 = '#(.*?)#' while re.search(p2, target): # 查找参数的字符串matach ,如果找到那么返回Ture m = re.search(p2, target) # 在目标的字符串里面查找,如果有匹配的字符串就返回对象 key = m.group(1) # 拿到对应的key value = getattr(GetData, key) # 拿到我们想要替换的内容 target = re.sub(p2, value, target, count=1) # 进行替换 return target