def test_audit(self, case): # 准备数据 url = conf.get('env', 'url') + case.url case.data = replace(case.data) # 测试用例中有*mloanId*需要替换,用例为标的为不存在 sql = "select max(id) from member;" if "*loanId*" in case.data: # 获取数据库中最大的标id进行加一,然后进行替换 memberId = self.db.find_one(sql)[0] memberId += 1 # 替换 case.data = case.data.replace("*loanId*", str(loanId)) # 发送请求获取结果 response = self.request.request(method=case.method, url=url, data=eval(case.data)) code = response.json()['code'] if response.json()['msg'] == "加标成功": sql = "select id from loan where memberId=#memberId# order by id desc limit 1;" replace(sql) loan_id = self.db.find_one(sql) setattr(ConText, "loan_id", str(loan_id)) # 对比结果 try: self.assertEqual(str(case.excepted), code) # 获取加标后标的数量 if case.check_sql: # 获取加标前的标数量 case.check_sql = replace(case.check_sql) status = self.db.find_count(case.check_sql) self.assertEqual(eval(case.data)['status'], status) except AssertionError as e: # 测试未通过,输出日志 logger.error(e) # 在excel用例中写入结果 self.wb.write_data(row=case.case_id + 1, column=9, msg=response.text) self.wb.write_data(row=case.case_id + 1, column=8, msg='failed') raise e else: self.wb.write_data(row=case.case_id + 1, column=9, msg=response.text) # 在excel用例中写入结果 self.wb.write_data(row=case.case_id + 1, column=8, msg='pass')
def test_add(self,case): # 准备数据 url = conf.get('env','url')+case.url case.data = replace(case.data) # 测试用例中有*memberId*需要替换,用例为标的为不存在 sql = "select max(id) from member;" if "*memberId*" in case.data: # 获取数据库中最大的用户id进行加一,然后进行替换 memberId = self.db.find_one(sql)[0] memberId += 1 # 替换 case.data = case.data.replace("*memberId*",str(memberId)) # 判断该用例是否需要校验sql if case.check_sql: case.check_sql = replace(case.check_sql) # 获取加标前的标数量 s_count = self.db.find_count(case.check_sql)
def test_reister(self, case): # 你用例参数化 # 注册:先去数据库查是否存在,存在则从新生成 if "#reister_phone#" in case.data: # 替换测试的号码 while True: phone = rand - phone() # 查询数据库该号码是否存在 self.db.find_count( "select * from meber where MobilePhone={}".format(phone)) if count == 0: break case.data.replace('#reister_phone#', phone) # 已经注册过的,从数据库获取张海波 if "#phone#" in case.data: phone = self.db.find_one("select * from meber limit 1")[0] case.data.replace('#phone#', phone) # 充值取现之前需要登录加登录账号可配置再配置文件 # 方法二、获取数据库最大值加1,或最新值减1 # 发送请求获取结果 response = self.request.request(method=case.method, url=case.url, data=eval(case.data)) try: # 预期的结果case.excepted 实际结果response.text logger.info('预期结果:{},实际结果:{}'.format(case.excepted, response.text)) self.assertEqual(case.excepted, response.text) except AssertionError as e: # 测试未通过,输出日志 logger.error(e) # 在excel用例中写入结果 self.wb.write_data(row=case.case_id + 1, column=8, msg='failed') raise e else: # 测试通过,输出日志 logger.info('测试用例:{}已通过'.format(case.title)) # 在excel用例中写入结果 self.wb.write_data(row=case.case_id + 1, column=8, msg='pass')
if case.check_sql: # 获取sql语句 key = tuple(eval(case.check_sql).keys())[0] # 执行sql语句 result = DbConfig(key).find_one(eval(case.check_sql)[key]) # 判断##在url里面,对url进行替换 if '##' in case.url: case.url = str(case.url).replace('##', str(result['id'])) # 判断是否在参数里面,如果在对参数进行替换 if '*exchangeaction*' in str(case.data): case.data = eval(case.data) case.data['exchangeActionIds'] = str(result['id']) case.data = str(case.data) if '*tag*' in case.data: ramdit_time = time.strftime("%Y%m%d%H%M%S", time.localtime()) case.data = case.data.replace('*tag*', str(ramdit_time)) # 判断是否存在参数 # if case.data: # 进行替换参数中需要替换的参数 case.data = replace(case.data) # 如果url里面存在?,数据是data类型 if '?' in case.url: if case.method == 'post': response = self.request.request(method=case.method, data=eval(case.data), url=case.url) # # 没有,数据类型为json类型 else: response = self.request.request(method=case.method, json=eval(case.data),
# 登陆测试用例 @data(*cases) def test_customer(self, case): # 获取用例在execl中的位置 self.row = case.case_id + 1 # 修改url if '?' in case.url: case.url = conf.get('env', 'open_url') + case.url + getattr( TestCaseData, 'accessToken') else: case.url = conf.get('env', 'open_url') + case.url if '*now*' in case.data: case.data = case.data.replace('*now*', str(int(time.time() * 10000))) if '*phone*' in case.data: case.data = case.data.replace( '*phone*', '152' + str(random.randint(10000000, 99999999))) # 对存在关键词的内容进行替换 case.data = replace(case.data) # post请求链接中存在?,为data格式。put请求链接中存在?,为json格式 response = self.request.request(method=case.method, json=eval(case.data), url=case.url) # 断言 if 'accessToken' in str(response.json()):