def test_pwd(self, case): # 准备用例数据 method, headers, url, data, row, expected = getdata(case) # 调用接口,获取实际结果 res = (request(url=url, method=method, data=data, headers=headers, verify=False)).json() try: result = '' if 'result' in res: result = res['result'] elif 'ERROR' in res: result = res['ERROR'] self.assertEqual(expected, result) except AssertionError as e: # 结果回写excel中 log.error("用例--{}--执行未通过".format(case["title"])) log.debug("预期结果:{}".format(expected)) log.debug("实际结果:{}".format(res)) log.exception(e) self.excel.write_data(row=row, column=8, value="未通过") raise e else: # 结果回写excel中 log.info("用例--{}--执行通过".format(case["title"])) self.excel.write_data(row=row, column=8, value="通过")
def wait_element_clickable(self, locator, img_info, timeout=15, poll_frequency=0.5): """ 等待元素可点击 :param locator: 定位表达式 :param img_info: 错误截图文件名 :param timeout: 等待超时时间 :param poll_frequency: 等待轮询时间 :return: """ # 等待元素之前获取当前的时间 start_time = time.time() try: ele = WebDriverWait(self.driver, timeout, poll_frequency).until( EC.element_to_be_clickable(locator)) except Exception as e: # 输出日志 log.error("元素--{}--等待可点击超时".format(locator)) log.exception(e) # 对当前页面进行截图 self.save_scree_image(img_info) raise e else: # 元素等待出现之后,获取实际 end_time = time.time() log.info("元素--{}--可点击等待成功,等待时间{}秒".format(locator, end_time - start_time)) return ele
def test_getPasteList(self, case): # 准备用例数据 url = "https://doctor.yy365.cn/ComHandle/getPasteList" method = "post" headers = {"Content-Type": "application/x-www-form-urlencoded"} data = {"QueryType": "", "Params": '{"search":""}', "UserGuid": "MTg2OTkwfEA5Yzg0MWM4ZThmNzdjY2FhYjAwZTg2MDY2MmZmNDNjM3xAN2E2ZmQ0ZmRkOWRjYTRlZGQ4NzRiNmUzNjEzNmExOGU-"} res = request(url=url, method=method, data=data, headers=headers, verify=False) row = case["case_id"] + 1 expected = eval(case["expected"]) # 调用接口,获取实际结果 try: self.assertEqual(expected["status_code"], res.status_code) except AssertionError as e: # 结果回写excel中 log.error("用例--{}--执行未通过".format(case["title"])) log.debug("预期结果:{}".format(expected)) log.debug("实际结果:{}".format(res)) log.exception(e) self.excel.write_data(row=row, column=8, value="未通过") raise e else: # 结果回写excel中 log.info("用例--{}--执行通过".format(case["title"])) self.excel.write_data(row=row, column=8, value="通过")
def wait_element_visibility(self, locator, img_info, timeout=15, poll_frequency=0.5): """ 等待元素可见 :param locator: 定位表达式 :param img_info: 错误截图文件名 :param timeout: 等待超时时间 :param poll_frequency: 等待轮询时间 :return: """ start_time = time.time() try: ele = WebDriverWait(self.driver, timeout, poll_frequency).until( EC.visibility_of_element_located(locator)) except Exception as e: # 输出日志 log.error("元素--{}--等待可见超时".format(locator)) log.exception(e) self.save_scree_image(img_info) raise e else: # 元素等待出现以后,获取实际 end_time = time.time() log.info("元素--{}--等待成功,等待时间{}秒".format(locator, end_time - start_time)) return ele
def test_loans(self, cas): cas['url'] = replace_data(cas['url']) url = conf.get('env', 'url') + cas['url'] headers = eval(conf.get('env', 'headers')) headers["Authorization"] = getattr(EnvData, "token") method = cas['method'] expected = eval(cas['expected']) row = cas['case_id'] + 1 respones = request(url=url, method=method, headers=headers) res = respones.json() try: self.assertEqual(expected['code'], res['code']) self.assertEqual(expected['msg'], res['msg']) except AssertionError as e: log.error('用例--{}--未通过'.format(cas['title'])) log.debug('预期结果{}'.format(expected)) log.debug('实际结果{}:'.format(res)) log.exception(e) self.execl.write(row=row, column=8, value='不通过') raise e else: log.info('用例--{}--通过'.format(cas['title'])) self.execl.write(row=row, column=8, value='通过')
def wait_element_visibility(self, locator, img_info, timeout=20, poll_frequency=0.5): '''等待元素可见''' # 等待元素之前获取当前时间 start_time = time.time() try: ele_visibility = WebDriverWait( self.driver, timeout, poll_frequency).until( EC.visibility_of_element_located(locator)) except Exception as e: # 输出日志 log.error('元素--{}--等待可见超时'.format(locator)) log.exception(e) # 对当前页面进行截图 self.save_scree_imge(img_info) raise e else: # 元素等待出现之后获取实际时间 end_time = time.time() log.info('元素--{}--等待成功,耗时:{}秒'.format(locator, end_time - start_time)) return ele_visibility
def test_update(self, cas): url = conf.get('env', 'url') + cas['url'] method = cas['method'] cas['data'] = replace_data(cas['data']) data = eval(cas['data']) headers = eval(conf.get('env', 'headers')) headers['Authorization'] = getattr(EnvData, 'token') expected = eval(cas['expected']) row = cas['case_id'] + 1 respones = request(url=url, method=method, json=data, headers=headers) res = respones.json() try: self.assertEqual(expected['code'], res['code']) self.assertEqual(expected['msg'], res['msg']) #判断数据库中是否更新昵称 if cas['check_sql']: sql = replace_data(cas['check_sql']) s = self.bb.find_one(sql)['reg_name'] self.assertEqual(data['reg_name'], s) except AssertionError as e: log.error('该用例{}报错'.format(cas['title'])) log.exception(e) self.exce.write(row=row, column=8, value='不通过') raise e else: log.info('该用例{}通过'.format(cas['title'])) self.exce.write(row=row, column=8, value='通过')
def test_getChatVedio(self, case): se = Session() # 准备用例数据 login_url = "http://doctor.yy365.cn/index/login" login_data = { "username": conf.get("test_data", "shop_user"), "password": conf.get("test_data", "shop_pwd")} response = se.post(url=login_url, data=login_data) url1 = conf.get("env", "url") + case["url"] data1 = eval(case["data"]) response2 = se.post(url=url1, data=data1, verify=False) res = response2.json() row = case["case_id"] + 1 expected = eval(case["expected"]) try: self.assertEqual(expected["CODE"], res["CODE"]) except AssertionError as e: # 结果回写excel中 log.error("用例--{}--执行未通过".format(case["title"])) log.debug("预期结果:{}".format(expected)) log.debug("实际结果:{}".format(res)) log.exception(e) self.excel.write_data(row=row, column=8, value="未通过") raise e else: # 结果回写excel中 log.info("用例--{}--执行通过".format(case["title"])) self.excel.write_data(row=row, column=8, value="通过")
def test_register(self, cas): url = cas['url'] method = cas['method'] if '#phone#' in cas['data']: phon = self.phone_replace() setattr(EnvData, 'mobile_phone', phon) cas['data'] = replace_data(cas['data']) data = eval(cas['data']) headers = eval(conf.get('env', 'headers')) expected = eval(cas['expected']) row = cas['case_id'] + 1 respones = request(url=url, method=method, json=data, headers=headers) res = respones.json() try: self.assertEqual(expected['code'], res['code']) self.assertEqual(expected['msg'], res['msg']) if cas['check_sql']: sql = replace_data(cas['check_sql']) f = self.my.find_count(sql) self.assertEqual(1, f) except AssertionError as e: log.error('这条用例{}报错'.format(cas['title'])) log.exception(e) self.exce.write(row=row, column=8, value='不通过') raise e else: log.info('这条用例{}通过了'.format(cas['title'])) self.exce.write(row=row, column=8, value='通过')
def test_update(self, case): # 第一步:准备用例数据 url = conf.get("env", "url") + case["url"] method = case["method"] data = eval(replace_data(case["data"])) # 替换参数中的用户id headers = eval(conf.get("env", "headers")) headers["Authorization"] = getattr(EnvData, "token_value") # 在请求头中加入setupclass中提取出来的token expected = eval(case["expected"]) row = case["case_id"] + 1 # 第二步:发送请求,获取结果 print("请求参数为:", data, type(data)) response = request(url=url, method=method, json=data, headers=headers) res = response.json() # 第三步:断言(比对预期结果和实际结果) try: self.assertEqual(expected["code"], res["code"]) self.assertEqual(expected["msg"], res["msg"]) except AssertionError as e: print("预期结果:", expected) print("实际结果:", res) self.excel.write_data(row=row, column=8, value="未通过") log.error("用例:{},执行未通过".format(case["title"])) log.exception(e) raise e else: self.excel.write_data(row=row, column=8, value="通过") log.info("用例:{},执行通过".format(case["title"]))
def test_loans(self, case): # 第一步:准备用例数据 url = conf.get("env", "url") + case["url"] method = case["method"] data = eval(replace_data(case["data"])) # 替换参数中的用户id headers = eval(conf.get("env", "headers")) expected = eval(case["expected"]) row = case["case_id"] + 1 # 第二步:发送请求,获取结果 response = request(url=url, method=method, params=data, headers=headers) res = response.json() print(response.url) # 第三步:断言(比对预期结果和实际结果) try: self.assertEqual(expected["code"], res["code"]) self.assertEqual(expected["msg"], res["msg"]) # 断言返回的数据的条数 self.assertEqual(expected["len"],len(res["data"])) except AssertionError as e: # print("预期结果:", expected) # print("实际结果:", res) self.excel.write_data(row=row, column=8, value="未通过") log.error("用例:{},执行未通过".format(case["title"])) log.exception(e) raise e else: self.excel.write_data(row=row, column=8, value="通过") log.info("用例:{},执行通过".format(case["title"]))
def test_audit(self, cas): url = conf.get('env', 'url') + cas['url'] method = cas['method'] data = eval(replace_data(cas['data'])) headers = eval(conf.get('env', 'headers')) headers['Authorization'] = getattr(EnvData, 'admin_token') expected = eval(cas['expected']) row = cas['case_id'] + 1 respones1 = request(url=url, method=method, json=data, headers=headers) res1 = respones1.json() if cas['title'] == '审核通过' and res1['msg'] == 'OK': setattr(EnvData, 'pass_loan_id', str(data['loan_id'])) print('预期结果:', expected) print('实际结果:', res1) try: self.assertEqual(expected['code'], res1['code']) self.assertEqual(expected['msg'], res1['msg']) #判断审核状态是否符合预期的结果 if cas['check_sql']: sql = replace_data(cas['check_sql']) status = self.bb.find_one(sql)['status'] self.assertEqual(expected['status'], status) except AssertionError as e: log.error('这条用例{}没有通过'.format(cas['title'])) log.exception(e) self.exce.write(row=row, column=8, value='不通过') raise e else: log.info('这条用例{}执行通过'.format(cas['title'])) self.exce.write(row=row, column=8, value='通过')
def test_loans(self,cas): url = conf.get('env','url') + cas['url'] data = eval(cas['data']) headers = eval(conf.get('env','headers')) method = cas['method'] expected = eval(cas['expected']) row = cas['case_id'] + 1 respones = request(url=url,method=method,params=data,headers=headers) res = respones.json() try: self.assertEqual(expected['code'],res['code']) self.assertEqual(expected['msg'],res['msg']) #判断返回的数据条数 self.assertEqual(expected['len'],len(res['data'])) except AssertionError as e: log.error('用例--{}--未通过'.format(cas['title'])) log.debug('预期结果{}'.format(expected)) log.debug('实际结果{}:'.format(res)) log.exception(e) self.execl.write(row=row, column=8, value='不通过') raise e else: log.info('用例--{}--通过'.format(cas['title'])) self.execl.write(row=row, column=8, value='通过')
def test_login(self, cas): url = cas['url'] method = cas['method'] headers = eval(conf.get('env', 'headers')) data = eval(cas['data']) expected = eval(cas['expected']) row = cas['case_id'] + 1 respons = request(url=url, method=method, json=data, headers=headers) res = respons.json() print('实际结果:', res) print('预期结果:', expected) try: self.assertEqual(expected['code'], res['code']) self.assertEqual(expected['msg'], res['msg']) except AssertionError as e: log.error('用例{}没有通过,错误等级为error'.format(cas['title'])) log.debug('预期结果{}'.format(cas['expected'])) log.debug('实际结果{}'.format(res)) log.exception(e) self.excel.write(row=row, column=8, value='未通过') raise e else: log.info('用例{}执行通过'.format(cas['title'])) self.excel.write(row=row, column=8, value='通过')
def wait_element_presence(self, locator, img_info, timeout=15, poll_frequency=0.5): """ 等待元素被加载 :param locator: 定位表达式 :param img_info: 错误截图信息 :param timeout: 超时时间 :param poll_frequency: 轮询时间 :return: """ # 等待元素之前获取当前的时间 start_time = time.time() try: ele = WebDriverWait(self.driver, timeout, poll_frequency).until( EC.presence_of_element_located(locator)) except Exception as e: # 输出日志 log.error("元素--{}--等待被加载超时".format(locator)) log.exception(e) # 对当前页面进行截图 self.save_scree_image(img_info) raise e else: # 元素等待出现之后,获取实际 end_time = time.time() log.info("元素--{}--加载等待成功,等待时间{}秒".format(locator, end_time - start_time)) return ele
def test_find_userinfo(self, case): # 1、准备请求参数 # 替换url中的会员id url = conf.get("env", "base_url") + replace_data(case["url"]) headers = eval(conf.get("env", "headers")) headers["Authorization"] = getattr(EnvData, "token") method = case["method"] expected = eval(case["expected"]) row = case["case_id"] + 1 # 2、发起请求,获取实际结果 response = request(url=url, method=method, headers=headers) res = response.json() print("预期结果:{}".format(expected)) print("实际结果:{}".format(res)) # 3、断言 try: # 断言预期结果与实际结果是否一致 self.assertEqual(expected["code"], res["code"]) self.assertEqual(expected["msg"], res["msg"]) except AssertionError as e: # 将结果写入日志文件和excel中 log.error("测试用例--{}--未通过".format(case["title"])) log.debug("预期结果:{}".format(expected)) log.debug("实际结果:{}".format(res)) log.exception(e) result = "未通过" raise e else: log.info("测试用例--{}--通过".format(case["title"])) result = "通过" finally: self.excel.write_data(row=row, column=8, value=result)
def test_recharge(self, case): # 第一步 ,准备用例 url = conf.get("env", "url") + case["url"] method = case["method"] # 准备用例参数 # 替换参数中用户的ID # case["data"] = case["data"].replace("#member_id#",self.member_id) # 转换为字典 data = eval(replace_data(case["data"])) headers = eval(conf.get("env", "headers")) # 准备请求头 headers["Authorization"] = getattr(EnvData, "token") expected = eval(case["expected"]) row = case["case_id"] + 1 # 判断该用例是否需要数据库校验,获取充值之前的账户余额 if case["check_sql"]: # sql = case["check_sql"].format(self.member_id) sql = replace_data(case["check_sql"]) start_money = self.db.find_one(sql)["leave_amount"] print("充值之前的金额:", start_money) # 第二步, 发送请求,获取实际结果 response = request(method=method, url=url, json=data, headers=headers) res = response.json() print("预期结果:", expected) print("实际结果:", res) # 获取充值后的账户余额 if case["check_sql"]: # sql = case["check_sql"].format(self.member_id) sql = replace_data(case["check_sql"]) end_money = self.db.find_one(sql)["leave_amount"] print("充值后的金额:", end_money) # 第三步,断言预期结果和实际结果 try: self.assertEqual(expected["code"], res["code"]) self.assertEqual(expected["msg"], res["msg"]) # 判断是否需要sql校验: if case["check_sql"]: recharge_money = decimal.Decimal(str(data["amount"])) self.assertEqual(recharge_money, end_money - start_money) except AssertionError as e: # 将结果回写excel 中 log.error("用例-- {}--执行未通过".format(case["title"])) # log.debug("预期结果:".format(expected)) # log.debug("实际结果:".format(res)) log.exception(e) # 这样可以异常情况打印到日志文件中! self.excel.write_data(row=row, column=8, value="未通过") raise e else: # 将结果回写excel 中 log.error("用例--{}--执行通过".format(case["title"])) self.excel.write_data(row=row, column=8, value="通过")
def click_ele(self, locator, img_info): try: ele = self.driver.find_element(*locator).click() except Exception as e: log.error(F"点击元素--{locator}--失败") log.exception(e) # 进行截图 self.save_error_image(img_info) else: log.info(F"元素--{locator}--点击成功")
def test_recharge(self, case): # 第一步:准备测试数据 # 请求方法 method = case["method"] # 请求url url = conf.get("env", "BASE_URL") + case["url"] # 请求数据 case["data"] = case["data"].replace("#member_id#", self.member_id) data = eval(case["data"]) # 请求头 headers = eval(conf.get("env", "headers")) headers["Authorization"] = self.token print(headers) # 期望结果 expected = eval(case["expected"]) # 用例回写行数 row = case["case_id"] + 1 # 数据库前置查询 if case["check_sql"]: sql = case["check_sql"].format(self.member_id) print(sql) start_money = self.db.find_one(sql)["leave_amount"] print("充值前的金额为:", start_money) # 第二步:接口调用 response = request(method=method, url=url, json=data, headers=headers) # 调用接口 res = response.json() print("预期结果:{}".format(expected)) print("实际结果:{}".format(res)) # 数据库后置查询 if case["check_sql"]: sql = case["check_sql"].format(self.member_id) end_money = self.db.find_one(sql)["leave_amount"] # 第三步:断言 try: # 数据断言 self.assertEqual(expected["code"], jsonpath(res, "$..code")[0]) self.assertEqual(expected["msg"], jsonpath(res, "$..msg")[0]) # 数据库断言 if case["check_sql"]: # 将充值金额转换为decimal类型(数据库中的金额为decimal类型) recharge_money = decimal.Decimal(str(data["amount"])) self.assertEqual(recharge_money, end_money - start_money) except AssertionError as e: # 结果回写到excel中 log.debug("----用例{}执行完成-------".format(case["title"])) log.exception(e) self.excel.write_excel(row=row, column=8, value="未通过") raise e else: # 结果回写到excel中 log.info("---用例{}执行完成---------".format(case["title"])) self.excel.write_excel(row=row, column=8, value="通过")
def test_withdraw(self, case): # 1、准备用例数据 url = conf.get("env", "base_url") + case["url"] method = case["method"] # 准备用例参数 # 替换参数中的用户id case["data"] = replace_data(case["data"]) data = eval(case["data"]) # 准备请求头 headers = eval(conf.get("env", "headers")) headers["Authorization"] = getattr(EnvData, "token") expected = eval(case["expected"]) row = case["case_id"] + 1 # 判断用例是否需要数据库校验,获取提现之前的账户余额 if case["check_sql"]: sql = replace_data(case["check_sql"]) start_money = self.db.find_one_data(sql)["leave_amount"] print("提现前得余额:", start_money) # 2、发送请求获取实际结果 response = request(url=url, method=method, json=data, headers=headers) res = response.json() print("预期结果:", expected) print("实际结果:", res) # 判断用例是否需要数据库校验,获取提现之后的账户余额 if case["check_sql"]: sql = replace_data(case["check_sql"]) end_money = self.db.find_one_data(sql)["leave_amount"] print("提现后得余额:", end_money) # 3、断言预期结果和实际结果 try: self.assertEqual(expected["code"], res["code"]) self.assertEqual(expected["msg"], res["msg"]) # 判断是否需要进行sql校验 if case["check_sql"]: # 将提现金额转换为decimal类型(因为数据库中的金额是decimal类型的) recharge_money = decimal.Decimal(str(data["amount"])) self.assertEqual(recharge_money, start_money - end_money) except AssertionError as e: # 将结果写入日志中 log.error("用例--{}--执行未通过".format(case["title"])) log.debug("预期结果:{}".format(expected)) log.debug("实际结果:{}".format(res)) log.exception(e) result = "未通过" raise e else: # 结果写到日志 log.info("用例--{}--执行通过".format(case["title"])) result = "通过" finally: # 将结果写入到excel中 self.excel.write_data(row=row, column=8, value=result)
def test_register(self, case): """ case={"address": "https://www.aliexpress.com/store/3213085", "asstext": "店铺验证成功"} :param case: :return: """ # 1、准备用例数据 # 请求方法 method = case["method"] # 请求地址 url = case["url"] # 请求参数 # 判断是否有手机号码需要替换 if "#phone#" in case["data"]: # 随机生成一个手机号码 phone = self.random_phone() # 将参数中的#phone#替换成随机生成的手机号码 case["data"] = case["data"].replace("#phone#", phone) data = eval(case["data"]) # 请求头 headers = eval(conf.get("env", "headers")) # 预期结果 expected = eval(case["expected"]) # 用例所在行 row = case["case_id"] + 1 # 2、发送请求获取实际结果 response = request(method=method, url=url, json=data, headers=headers) # 获取实际结果 res = response.json() print("预期结果:", expected) print("实际结果:", res) # 3、断言 try: self.assertEqual(expected["code"], res["code"]) self.assertEqual(expected["msg"], res["msg"]) # 判断是否需要进行sql校验 if case["check_sql"]: sql = case["check_sql"].replace("#phone#", data["mobile_phone"]) res = self.db.find_data_count(sql) self.assertEqual(1, res) except AssertionError as e: # 结果回写excel中 log.error("用例--{}--执行未通过".format(case["title"])) log.debug("预期结果:{}".format(expected)) log.debug("实际结果:{}".format(res)) log.exception(e) self.excel.write_data(row=row, column=8, value="未通过") raise e else: # 结果回写excel中 log.info("用例--{}--执行通过".format(case["title"])) self.excel.write_data(row=row, column=8, value="通过")
def get_ele(self, locator, img_info): try: ele = self.driver.find_element(*locator) except Exception as e: log.error(F"获取元素--{locator}--失败") log.exception(e) # 进行截图 self.save_error_image(img_info) else: log.info(F"元素--{locator}--获取成功") return ele
def test_register(self, case): # 第一步,准备用例数据 (请求方法,请求地址,请求参数,请求头 # 请求方法 method = case["method"] # 请求url url = case["url"] # 请求参数是否有手机号需要替换 # 判断 if "#phone#" in case["data"]: phone = self.random_phone() case["data"] = case["data"].replace("#phone#", phone) data = eval(case["data"]) headers = eval(conf.get("env", "headers")) expected = eval(case["expected"]) # 用例所在行 row = case["case_id"] + 1 # 第二步,发送请求获取实际结果 response = request(method=method, url=url, json=data, headers=headers) res = response.json() # print("实际结果:",res) print("预期结果:", expected) print("实际结果:", res) # 第三步,断言 try: self.assertEqual(expected["code"], res["code"]) self.assertEqual(expected["msg"], res["msg"]) # 判断是否需要进行sql校验 if case["check_sql"]: sql = case["check_sql"].replace("#phong#", data["mobile_phone"]) res = self.db.find_count(sql) self.assertTrue(1, res) except AssertionError as e: # ---------------------将结果回写excel 中 log.error("用例---- {}----执行未通过".format(case["title"])) log.info("预期结果:", expected) log.info("实际结果:", res) log.exception(e) # log.error(e) log.exception(e) # 这样可以异常情况打印到日志文件中! self.excel.write_data(row=row, column=8, value="未通过") raise e else: # ----------------------将结果回写excel 中 log.error("用例---- {}----执行通过".format(case["title"])) self.excel.write_data(row=row, column=8, value="通过")
def get_element_text(self, locator, img_info): try: text = self.driver.find_element(*locator).text except Exception as e: # 日志输出 log.error("元素--{}--获取文本失败".format(locator)) log.exception(e) self.save_scree_image(img_info) raise e else: log.info("元素--{}--获取文本失败".format(locator)) return text
def test_withdraw(self, case): # 第一步:准备用例数据 # 请求方法 method = case["method"] # 请求地址 url = conf.get("env", "BASE_URL") + case["url"] # 请求参数,替换用例中#member_id# data = eval(case["data"].replace("#member_id#", self.member_id)) # 请求头 headers = eval(conf.get("env", "headers")) headers["Authorization"] = self.token # 期望结果 expected = eval(case["expected"]) # 数据库前置查询 if case["check_sql"]: sql = case["check_sql"].format(self.member_id) start_money = self.db.find_one(sql)["leave_amount"] # 需要回写的行 row = case["case_id"] + 1 # 第二步:接口调用 response = requests.request(method=method, url=url, json=data, headers=headers) res = response.json() print("预期结果:", expected) print("实际结果:", res) # 数据库后置查询 if case["check_sql"]: sql = case["check_sql"].format(self.member_id) end_money = self.db.find_one(sql)["leave_amount"] # 第三步:数据断言和数据库断言 try: self.assertEqual(expected["code"], res["code"]) self.assertEqual(expected["msg"], res["msg"]) # 数据库断言 if case["check_sql"]: recharge_money = decimal.Decimal(str(data["amount"])) self.assertEqual(recharge_money, start_money - end_money) except AssertionError as e: # 结果回写到excel中 log.error("用例{}执行未通过".format(case["title"])) log.debug("预期结果:{}".format(expected)) log.debug("实际结果:{}".format(res)) log.exception(e) self.excel.write_excel(row=row, column=8, value="未通过") raise e else: log.info("用例--{}--执行通过".format(case["title"])) self.excel.write_excel(row=row, column=8, value="通过")
def test_withdraw(self, case): # 第一步:准备用例数据 url = conf.get("env", "url") + case["url"] method = case["method"] # 准备用例参数 # 替换参数中的用户id, case["data"] = case["data"].replace("#member_id#", self.member_id) data = eval(case["data"]) # 准备请求头 headers = eval(conf.get("env", "headers")) headers["Authorization"] = self.token expected = eval(case["expected"]) row = case["case_id"] + 1 # 判断该用例是否需要数据库校验,获取取现之前的账户余额 if case["check_sql"]: sql = case["check_sql"].format(self.member_id) start_money = self.db.find_one(sql)["leave_amount"] print("取现之前的金额:", start_money) # 第二步: 发送请求获取实际结果 response = request(url=url, method=method, json=data, headers=headers) res = response.json() print("预期结果:", expected) print("实际结果:", res) # 判断该用例是否需要数据库校验,获取取现之后的账户余额 if case["check_sql"]: sql = case["check_sql"].format(self.member_id) end_money = self.db.find_one(sql)["leave_amount"] print("取现之后的金额:", end_money) # 第三步:断言预期结果和实际结果 try: self.assertEqual(expected["code"], res["code"]) self.assertEqual(expected["msg"], res["msg"]) # 判断是否需要进行sql校验 if case["check_sql"]: # 将取现金额转换为decimal类型(因为数据库中的金额是decimal类型的) recharge_money = decimal.Decimal(str(data["amount"])) self.assertEqual(recharge_money, start_money - end_money) except AssertionError as e: # 结果回写excel中 log.error("用例--{}--执行未通过".format(case["title"])) log.debug("预期结果:{}".format(expected)) log.debug("实际结果:{}".format(res)) log.exception(e) self.excel.write_data(row=row, column=8, value="未通过") raise e else: # 结果回写excel中 log.info("用例--{}--执行通过".format(case["title"])) self.excel.write_data(row=row, column=8, value="通过")
def click_ele(self, locator, img_info): # 点击元素 try: self.driver.find_element(*locator).click() except Exception as e: # 输出日志 log.error("元素--{}--点击元素失败".format(locator)) log.exception(e) # 对当前页面进行截图 self.save_error_image(img_info) raise e else: log.info("元素--{}--点击成功".format(locator))
def test_add(self, case): # 第一步:准备用例数据 url = conf.get("env", "url") + case["url"] method = case["method"] # 替换参数中的用户id, # case["data"] = case["data"].replace("#member_id#", self.member_id) # --------替换用例中的动态数据 case["data"] = replace_data(case["data"]) data = eval(case["data"]) # 准备请求头 headers = eval(conf.get("env", "headers")) headers["Authorization"] = getattr(EnvData, "token") expected = eval(case["expected"]) row = case["case_id"] + 1 # 加标之前,查询数据库中该用户标的数量 if case["check_sql"]: # sql = case["check_sql"].replace("#member_id#",self.member_id) sql = replace_data(case["check_sql"]) start_count = self.db.find_count(sql) # 第二步: 发送请求获取实际结果 response = request(url=url, method=method, json=data, headers=headers) res = response.json() print("预期结果:", expected) print("实际结果:", res) # 第三步:断言预期结果和实际结果 try: self.assertEqual(expected["code"], res["code"]) self.assertEqual(expected["msg"], res["msg"]) if case["check_sql"]: # 加标之后 # sql = case["check_sql"].replace("#member_id#", self.member_id) replace_data(case["check_sql"]) end_count = self.db.find_count(sql) self.assertEqual(1, end_count - start_count) except AssertionError as e: # 结果回写excel中 log.error("用例--{}--执行未通过".format(case["title"])) log.debug("预期结果:{}".format(expected)) log.debug("实际结果:{}".format(res)) log.exception(e) self.excel.write_data(row=row, column=8, value="未通过") raise e else: # 结果回写excel中 log.info("用例--{}--执行通过".format(case["title"])) self.excel.write_data(row=row, column=8, value="通过")
def get_ele(self, locator, img_info): # 获取到元素节点 try: ele = self.driver.find_element(*locator) except Exception as e: # 输出日志 log.error("获取元素--{}--失败".format(locator)) log.exception(e) # 对当前页面进行截图 imginfo 错误截图信息由调用处传入 self.save_error_image(img_info) raise e else: log.info("元素--{}--获取成功".format(locator)) return ele
def get_ele_text(self, locator, img_info): # 获取元素包含text信息 需要传入loactor 还要进行拆包 try: text = self.driver.find_element(*locator).text except Exception as e: # 输出日志 log.error("元素--{}--获取文本失败".format(locator)) log.exception(e) # 对当前页面进行截图 self.save_error_image(img_info) raise e else: log.info("元素--{}--获取文本成功".format(locator)) return text