def add_loan(self): data = { "member_id": self.member_id, "title": "一个测试项目", "amount": 3000, "loan_rate": 20.0, "loan_term": 6, "loan_date_type": 1, "bidding_days": 5 } res = requests_handler.visit( Handler.yaml['url']['domain'] + "/loan/add", method='post', headers={ "X-Lemonban-Media-Type": "lemonban.v2", "Authorization": self.token }, json=data) result_data = res.json() loan_id = jsonpath.jsonpath(result_data, "$..id")[0] return loan_id
def test_login(self, case): # 第一步:准备用例数据 # 请求方法 method = case["method"] # 请求地址 url = case["url"] # 请求参数 data = json.loads(case["data"]) # 请求头 headers = json.loads(case["headers"]) # 预期结果 expected = json.loads(case["expected"]) # 第二步:发送请求获取实际结果 res = requests_handler.visit(method=method, url=url, json=data, headers=headers) # 获取实际结果 print("预期结果:", expected) print("实际结果:", res) # 第三步:断言 try: self.assertEqual(expected["code"], res["code"]) self.assertEqual(expected["msg"], res["msg"]) except AssertionError as e: # 结果回写excel中 pass
def test_register(self, test_info): # 判断测试用例数据有没有 #phone#, 如果有,就要替换成动态生成的手机号码。 if "#phone#" in test_info["data"]: phone = self.random_phone() test_info["data"] = test_info["data"].replace("#phone#", phone) # 访问接口 data = json.loads(test_info["data"]) resp = requests_handler.visit(url=test_info["url"], method=test_info["method"], json=data, headers=json.loads(test_info["headers"])) expected_dict = json.loads(test_info["expected"]) try: for key, value in expected_dict.items(): self.assertEqual(value, resp[key]) if resp["code"] == 0: # 查询数据当中有没有插入手机号码注册成功的记录 # db = Handler.db_mysql_class() sql_code = "SELECT * from futureloan.member WHERE mobile_phone={};".format( data["mobile_phone"]) user = self.db.query(sql_code) self.assertTrue(user) logger.info("测试用例通过") except AssertionError as e: logger.error("测试用例无法通过:{}".format(e)) raise e
def test_login(self, test_info): # 访问接口 logger.info( "==================================开始执行第{}条测试用例==================================" .format(test_info['case_id'])) res = visit(url=hd.yaml['http']['base_url1'] + test_info['url'], method=test_info['method'], headers=json.loads(test_info['headers']), data=json.loads(test_info['data'])) expected = json.loads(test_info['expected']) logger.info('预期结果是:{}'.format(expected)) logger.info('实际结果是:{}'.format(res)) try: for k, v in expected.items(): self.assertEqual(res[k], v) logger.info('用例执行通过') self.result = 'PASS' except AssertionError as e: logger.error('用例执行失败') self.result = 'FAIL' raise e finally: hd.excel.write('Login', test_info['case_id'] + 1, 9, self.result)
def test_recharge(self, case_info): data = case_info["data"] if "#member_id#" in data: data = data.replace("#member_id#", str(self.member_id)) headers = case_info["headers"] if "#token#" in headers: headers = headers.replace("#token#", self.token) # 查询之前查余额 user_money = self.db.query( "SELECT leave_amount FROM member WHERE id ={}".format( self.member_id)) before_money = user_money["leave_amount"] resp = requests_handler.visit(url=env_data.yaml_data["host"] + case_info["url"], method=case_info["method"], headers=json.loads(headers), json=json.loads(data)) expected = json.loads(case_info["expected"]) self.assertTrue(expected["code"], resp["code"]) self.assertTrue(expected["msg"], resp["msg"]) if resp["code"] == 0: user_money = self.db.query( "SELECT leave_amount FROM member WHERE id ={}".format( self.member_id)) after_money = user_money["leave_amount"] self.assertTrue(before_money + data["amount"] == after_money) pass
def test_message_send(self, test_info): # token if '恭喜升级为英粉卡会员' in test_info['context']: test_info['context'] = eval(test_info['context']) user_id = test_info['context']['userId'] headers = {'userToken': 'b5d13ed74062a0dbd5fb6d4b4d785d40'} data = { "mobile": "", "messageType": 2, "templateCode": "692346695", "data": { "userId": user_id, "title": "恭喜升级为英粉卡会员", "content": "", "imageUrl": "", "popupImageUrl": "https://life-dt.oss-cn-hangzhou.aliyuncs.com/advert/dfb3060da11e4f4c898c08dba6051d7f.png?x-oss-process=style/q60", "jumpFlag": 0, "appLink": "", "h5Link": "", "displayPosition": "1", "isSendStationMsg": 1 } } res = visit( url='https://s.inglemirepharmmall.com/message/send', method='post', headers=headers, json=data, ) logger.info(res)
def test_recharge(self, caseData): method = caseData['method'] url = handlerMid.yaml['url']['domain'] + caseData['case_url'] data = caseData['case_data'] headers = json.loads(caseData['headers']) expected_results = eval(caseData['case_expected']) # 使用已经登录的memberId 更换用例数据中member_id的值 # if '#memberId' in data: # data = data.replace("#memberId", str(self.member_id)) # # data["member_id"] = self.member_id # data = json.loads(data) # 使用已经登录的token 更换用例数据中token的值 # if '#Token' in headers["Authorization"]: # headers["Authorization"] = self.token data = handlerMid.replace_data(caseData['case_data']) headers = handlerMid.replace_data(caseData['headers']) headers = json.loads(headers) data = json.loads(data) # 查询新增项目前数据库中 该用户的项目数 if caseData['check_sql'] is not None: before_sql = "SELECT COUNT(1) before_count FROM loan WHERE member_id={}".format( self.member_id) before_count = self.db.query(before_sql, one=False)[0]['before_count'] # 访问接口 res = requests_handler.visit(url, method=method, json=data, headers=headers) try: for key, value in expected_results.items(): self.assertEqual(value, res.json()[key]) # 查询新增项目后数据库中 该用户的 # 项目数 if res.json()["code"] == 0: after_sql = "SELECT COUNT(1) after_count FROM loan WHERE member_id={}".format( self.member_id) after_count = self.db.query(after_sql, one=False)[0]['after_count'] # 新增前后项目数 self.assertEqual(before_count + 1, after_count) handlerMid.excel.update_excel('addProject', caseData["case_id"] + 1, 10, 'pass') logger.info("第 {} 条测试用例通过".format(caseData["case_id"])) except Exception as e: handlerMid.excel.update_excel('addProject', caseData["case_id"] + 1, 10, 'fail') logger.error("测试用例无法通过,预期结果:{}!=实际结果:{}".format( expected_results, res.json())) logger.error(traceback.format_exc()) raise e
def test_recharge(self, case_info): """测试充值接口""" # data = case_info["data"] # if "#member_id#" in data: # data = data.replace("#member_id#", str(self.member_id)) # data = eval(data) # # headers = case_info["headers"] # if "#token#" in headers: # headers = headers.replace("#token#", self.token) data = env_data.replace_data(case_info["data"]) print(data) headers = env_data.replace_data(case_info["headers"]) print(headers) # 充值之前查余额 user_money = self.db.query( "SELECT leave_amount FROM member WHERE id ={}".format( self.member_id)) before_amount = user_money["leave_amount"] # 金额大于500000调用提现接口 if before_amount >= 500000: env_data.withdraw() logger.info("正在执行第{}条用例:{}".format(case_info["case_id"], case_info["title"])) data = json.loads(data) resp = requests_handler.visit(url=env_data.yaml_data["host"] + case_info["url"], method=case_info["method"], headers=json.loads(headers), json=data) print(resp) data_path = os.path.join(env_data.config.DATA_PATH, "testcases.xlsx") try: expected = eval(case_info["expected"]) self.assertTrue(expected["code"] == resp["code"]) self.assertTrue(expected["msg"] == resp["msg"]) if resp["code"] == 0: user_money = self.db.query( "SELECT leave_amount FROM member WHERE id ={}".format( self.member_id)) after_amount = user_money["leave_amount"] self.assertTrue( Decimal(str(before_amount)) + Decimal(str(data["amount"])) == Decimal(str(after_amount))) self.result = "PASS" logger.info("第{}条测试用例通过".format(case_info["case_id"])) except AssertionError as e: self.result = "FAIL" logger.error("第{}条测试用例无法通过:{}".format(case_info["case_id"], e)) raise e finally: ExcelHandler(data_path).write(sheet_name="recharge", row=case_info["case_id"] + 1, column=9, data=self.result)
def withdraw(self): data = {"member_id": self.member_id, "amount": 500000} resp = requests_handler.visit( url=MiddleHandler.yaml_data["host"] + "/member/withdraw", method="post", headers={"X-Lemonban-Media-Type": "lemonban.v2", "Authorization": self.token}, json=data )
def sys_login(self): '''后台登陆''' data = {"username": "******", "password": "******"} res = visit(url=self.yaml['http']['base_url3'] + '/admin/sys/login', method='post', json=data) sys_token = jsonpath(res, '$..token')[0] return sys_token
def audit(self): data = {"loan_id":self.loan_id,"approved_or_not":True} resp = requests_handler.visit( url=MiddleHandler.yaml_data["host"] + "/loan/audit", method="patch", headers={"X-Lemonban-Media-Type":"lemonban.v2", "Authorization": self.admin_token}, json=data ) return data["loan_id"]
def recharge(self): data = {"member_id": self.investors_member_id, "amount": "3000"} res = requests_handler.visit( Handler.yaml['url']['domain'] + "/member/recharge", method='post', headers={ "X-Lemonban-Media-Type": "lemonban.v2", "Authorization": self.investors_token }, json=data)
def audit_loan(self): data = {"loan_id": self.loan_id, "approved_or_not": True} res = requests_handler.visit( Handler.yaml['url']['domain'] + "/loan/audit", method='patch', headers={ "X-Lemonban-Media-Type": "lemonban.v2", "Authorization": self.admin_token }, json=data)
def test_audit(self, case_info): """测试提现接口""" logger.info("正在执行第{}条用例:{}".format(case_info["case_id"], case_info["title"])) data = case_info["data"] if "#loan_id#" in data: data = data.replace("#loan_id#", str(self.loan_id)) data = eval(data) print(data) headers = case_info["headers"] if "#token#" in headers: headers = headers.replace("#token#", self.token) headers = eval(headers) if "#admin_token#" in headers: headers = headers.replace("#token#", self.admin_token) headers = eval(headers) # 动态生成一个已经不是审核状态的标 # 直接在数据库中查找status != 1, data = case_info["data"] if "#pass_loan_id#" in data: data = self.db.query("SELECT * FROM loan WHERE status != 1") data = eval(data) data = case_info["data"] if "#pass_loan_id#" in data: data = data.replace("#loan_id#", str(env_data.pass_loan_id)) data = eval(data) resp = requests_handler.visit(url=env_data.yaml_data["host"] + case_info["url"], method=case_info["method"], json=data, headers=headers) # x = json.loads(data["amount"]) # print(x) try: expected = json.loads(case_info["expected"]) for k, v in expected.items(): print(resp[k]) self.assertTrue(v == resp[k]) if resp["code"] == 0: # 验证数据库状态 loan = self.db.query("SELECT * FROM loan WHERE id={}".format( self.loan_id)) self.assertTrue(loan["status"] == expected["status"]) env_data.pass_loan_id = loan["id"] logger.info("第{}条测试用例通过".format(case_info["case_id"])) except AssertionError as e: logger.error("第{}条测试用例无法通过:{}".format(case_info["case_id"], e)) raise e
def test_recharge(self, caseData): method = caseData['method'] url = handlerMid.yaml['url']['domain'] + caseData['case_url'] expected_results = eval(caseData['case_expected']) # 使用已经登录的memberId 更换用例数据中member_id的值 # if data['member_id'] == '#memberId': # # data = data.replace("#menberId", self.member_id) # data["member_id"] = self.member_id # 使用已经登录的token 更换用例数据中token的值 # if headers["Authorization"] == '#Token': # headers["Authorization"] = self.token # 替换数据 data = handlerMid.replace_data(caseData['case_data']) headers = handlerMid.replace_data(caseData['headers']) headers = json.loads(headers) data = json.loads(data) # 查询充值之前的余额 if caseData['check_sql'] is not None: # "SELECT leave_amount from member where id={}".format(self.member_id) before_sql = eval(caseData['check_sql']) before_amount = self.db.query(before_sql)['leave_amount'] # 访问接口 res = requests_handler.visit(url, method=method, json=data, headers=headers) try: for key, value in expected_results.items(): self.assertEqual(value, res.json()[key]) # 充值成功后需要判断数据库中的金额是否正确 if res.json()["code"] == 0: after_sql = "SELECT leave_amount from member where id={}".format( self.member_id) after_amount = self.db.query(after_sql)['leave_amount'] # 断言充值金额加上充值前的金额 要等于 充值成功后的金额 self.assertEqual( Decimal(str(data['amount'])) + before_amount, after_amount) handlerMid.excel.update_excel('recharge', caseData["case_id"] + 1, 10, 'pass') logger.info("第 {} 条测试用例通过".format(caseData["case_id"])) except Exception as e: handlerMid.excel.update_excel('recharge', caseData["case_id"] + 1, 10, 'fail') logger.error("测试用例无法通过,预期结果:{}!=实际结果:{}".format( expected_results, res.json())) logger.error(traceback.format_exc()) raise e
def login(self, user): res = requests_handler.visit( Handler.yaml['url']['domain'] + "/member/login", method='post', headers={"X-Lemonban-Media-Type": "lemonban.v2"}, json=Handler.yaml[user]) data = res.json() token_str = jsonpath.jsonpath(data, "$..token")[0] token_type = jsonpath.jsonpath(data, "$..token_type")[0] token = " ".join([token_type, token_str]) member_id = jsonpath.jsonpath(data, "$..id")[0] return {"token": token, "member_id": member_id}
def add_coupon(self, phone, coupon_id): '''发送优惠券''' data = { "userMobile": phone, "couponId": coupon_id, "couponCnt": 1, "memo": "" } res = visit(url=self.yaml['http']['base_url3'] + '/admin/userCoupon/addCouponMember', method='post', headers={'token': self.sys_token}, json=data)
def test_audit(self, case_info): """测试提现接口""" logger.info("正在执行第{}条用例:{}".format(case_info["case_id"], case_info["title"])) data = case_info["data"] if "#loan_id#" in data: data = data.replace("#loan_id#", str(self.loan_id)) if "#pass_loan_id#" in data: loan_info = self.db.query("SELECT * FROM loan WHERE status != 1") data = data.replace("#pass_loan_id#", str(loan_info["id"])) headers = case_info["headers"] if "#admin_token#" in headers: headers = headers.replace("#admin_token#", self.admin_token) if "#token#" in headers: headers = headers.replace("#token#", self.token) resp = visit(url=env_data.yaml_data["host"] + case_info["url"], method=case_info["method"], headers=eval(headers), json=eval(data)) print(resp) data_path = os.path.join(env_data.config.DATA_PATH, "testcases.xlsx") try: expected = json.loads(case_info["expected"]) self.assertTrue(expected["code"] == resp["code"]) self.assertTrue(expected["msg"] == resp["msg"]) if resp["code"] == 0: # 验证数据库状态 loan_info_after = self.db.query( "SELECT * FROM loan WHERE id={}".format(self.loan_id)) # a = loan_info_after["status"] # b = eval(case_info["expected"])["status"] # print(a) # print(b) self.assertTrue( loan_info_after["status"] == expected["status"]) self.result = "PASS" logger.info("第{}条测试用例通过".format(case_info["case_id"])) except AssertionError as e: self.result = "FAIL" logger.error("第{}条测试用例无法通过:{}".format(case_info["case_id"], e)) raise e finally: ExcelHandler(data_path).write(sheet_name="audit", row=case_info["case_id"] + 1, column=9, data=self.result)
def add_project(self): data = {"member_id":self.member_id, "title":"借钱去月球看星星", "amount":100000, "loan_rate":12.0, "loan_term":3, "loan_date_type":1, "bidding_days":5} resp = requests_handler.visit( url=MiddleHandler.yaml_data["host"] + "/loan/add", method="post", headers={"X-Lemonban-Media-Type":"lemonban.v2", "Authorization": self.token}, json=data ) return jsonpath(resp,"$..id")[0]
def test_dispose_ht_order(self, test_info): '''处理海淘订单''' logger.debug('用户参数:{}'.format(test_info)) headers = {'usertoken': 'e310b8e28f7cad52803cd836211cae65'} data = { 'orderSn': test_info['orderSn'], 'realName': test_info['realName'], 'idNumber': test_info['idNumber'] } # 访问接口 res = visit(url='http://test.inglemirepharmmall.com/order/', method='post', headers=headers, data=data) logger.info('第{}条的响应是:{}'.format(test_info['case_id'], res['msg']))
def login(self, user): """登录测试账号""" res = requests_handler.visit( url=MiddleHandler.yaml_data["host"] + "/member/login", method="post", headers={"X-Lemonban-Media-Type": "lemonban.v2"}, json=user ) # 提取token # jsonpath token_type = jsonpath(res, "$..token_type")[0] token_str = jsonpath(res, "$..token")[0] token = " ".join([token_type, token_str]) member_id = jsonpath(res, "$..id")[0] return {"token": token, "member_id": member_id}
def test_invest(self, case_info): """测试投资接口""" # before_data = self.db.query( # "SELECT COUNT(*) as berfore_num FROM loan WHERE member_id={};".format(self.member_id)) # before_num = before_data["berfore_num"] logger.info("正在执行第{}条用例:{}".format(case_info["case_id"], case_info["title"])) data = case_info["data"] if "#member_id#" in data: data = data.replace("#member_id#", str(self.member_id)) headers = case_info["headers"] if "#token#" in headers: headers = headers.replace("#token#", self.token) if "#loan_id#" in data: data = data.replace("#loan_id#", str(self.pass_loan_id)) # 访问接口 data_1 = self.db.query("SELECT * FROM loan WHERE id = {}".format( self.pass_loan_id)) resp = visit(url=env_data.yaml_data["host"] + case_info["url"], method=case_info["method"], json=eval(data), headers=eval(headers)) print(resp) data_path = os.path.join(env_data.config.DATA_PATH, "testcases.xlsx") try: for k, v in json.loads(case_info["expected"]).items(): self.assertTrue(v == resp[k]) # if resp["code"] == 0: # after_data = self.db.query( # "SELECT COUNT(*) as after_num FROM loan WHERE member_id={};".format(self.member_id)) # after_num = after_data["after_num"] # self.assertTrue(before_num + 1 == after_num) self.result = "PASS" logger.info("第{}条测试用例通过".format(case_info["case_id"])) except AssertionError as e: self.result = "FAIL" logger.error("第{}条测试用例无法通过:{}".format(case_info["case_id"], e)) raise e finally: ExcelHandler(data_path).write(sheet_name="add", row=case_info["case_id"] + 1, column=9, data=self.result)
def test_getMyStoreList(self, test_info): ''' 获取门店列表 :param test_info:用例数据 ''' # 替换参数化数据 logger.debug('L3_token:{}'.format(self.L3_token)) if '#token#' in test_info['headers']: test_info['headers'] = test_info['headers'].replace( '#token#', self.L3_token) headers = json.loads(test_info['headers']) logger.info( "==================================开始执行第{}条测试用例==================================" .format(test_info['case_id'])) # 访问接口 res = visit(url=hd.yaml['http']['base_url1'] + test_info['url'], method=test_info['method'], headers=headers) expected = json.loads(test_info['expected']) logger.info('预期结果是:{}'.format(expected)) logger.info('实际结果是:{}'.format(res)) store_id_list = jsonpath(res, '$..storeId') store_id_str = '' for i in store_id_list: store_id_str += str(i) + ',' store_id_str = store_id_str.strip(',') if res['code'] == 0: sql = 'SELECT count(*) from db_yshu_life.ys_local_warehouse where store_id in {}'.format( eval(store_id_str)) store_count = self.db.query_db(sql)['count(*)'] try: self.assertEqual(store_count, len(store_id_list)) logger.info('用例执行通过') self.result = 'Pass' except AssertionError as e: logger.error('用例执行失败:{}'.format(e)) self.result = 'Fail' raise e
def test_invest(self, test_info): # 用handler()中同名属性的值替换用例data中被标记的数据 data = test_info["data"] data = env_data.replace_data(data) data = eval(data) # 替换 token ,存在 headers 当中 headers = test_info["headers"] headers = env_data.replace_data(headers) headers = json.loads(headers) # 查询之前的余额 if test_info["check_sql"]: member = self.db.query("SELECT * FROM futureloan.member WHERE id={}".format(self.member_id)) money_before = member['leave_amount'] before_loan = self.db.query( "SELECT * FROM futureloan.invest WHERE member_id={}".format(self.member_id), one=False ) # 访问接口 resp = requests_handler.visit( url=env_data.yaml["host"] + test_info["url"], method=test_info["method"], headers=headers, json=data ) print(data) print(resp) expected = json.loads(test_info["expected"]) self.assertEqual(expected["code"], resp["code"]) self.assertEqual(expected["msg"], resp["msg"]) if resp["code"] == 0: after_loan = self.db.query( "SELECT * FROM futureloan.invest WHERE member_id={}".format(self.member_id), one=False ) # 断言投资记录是否增加一条 invest self.assertEqual(len(before_loan) + 1, len(after_loan)) # 断言用户余额是否减少 member_after = self.db.query("SELECT * FROM futureloan.member WHERE id={}".format(self.member_id)) money_after = member_after['leave_amount'] self.assertEqual(money_before - data["amount"], money_after)
def login(self, user_info): ''' 账号登录,提取用户的token :return: ''' res = visit(url=self.yaml['http']['base_url1'] + '/member/passwordLogin', method='post', headers={ "appDevice": "1", "deviceNumber": "52836374-4aa3-45fd-9291-45386072224e" }, data=user_info) token = jsonpath(res, '$..userToken')[0] user_id = jsonpath(res, '$..userId')[0] mobile = jsonpath(res, '$..mobile') member_info = {'token': token, 'user_id': user_id, 'mobile': mobile} return member_info
def test_login(self, test_info): """测试登录接口""" logger.info("正在执行第{}条用例:{}".format(test_info["case_id"], test_info["title"])) logger.info("第{}条测试用例的数据是{}".format(test_info["case_id"], test_info)) # 访问接口 logger.info("第{}次访问登录接口".format(test_info["case_id"])) resp = requests_handler.visit(test_info["url"], method=test_info["method"], json=json.loads(test_info["data"]), headers=json.loads(test_info["headers"])) # 断言 try: for k, v in json.loads(test_info["expected"]).items(): self.assertTrue(v == resp[k]) logger.info("第{}条测试用例通过".format(test_info["case_id"])) # 登录失败记录日志并抛出异常 except AssertionError as e: logger.error("第{}条测试用例无法通过:{}".format(test_info["case_id"], e)) raise e
def test_getGoodsListByCouponId(self, test_info): '''根据优惠券id获取商品''' # 替换参数化数据 if "#invalidCouponId#" in test_info['data']: # 查询状态为失效的couponID sql = 'select * from db_yshu_lb.ys_coupon where coupon_status = 0' coupon_id = self.db.query_db(sql)['coupon_id'] test_info['data'] = test_info['data'].replace( "#invalidCouponId#", str(coupon_id)) headers = hd.replace_data(test_info['headers']) headers = json.loads(headers) data = json.loads(test_info['data']) logger.info( "==================================开始执行第{}条测试用例==================================" .format(test_info['case_id'])) res = visit(url=hd.yaml['http']['base_url1'] + test_info['url'], method=test_info['method'], headers=headers, params=data) expected = json.loads(test_info['expected']) logger.info('预期结果是:{}'.format(expected)) logger.info('实际结果是:{}'.format(res)) try: for k, v in expected.items(): self.assertEqual(res[k], v) logger.info('用例执行通过') self.result = 'PASS' except AssertionError as e: logger.error('用例执行失败') self.result = 'Fail' raise e finally: hd.excel.write('getGoodsListByCouponId', test_info['case_id'] + 1, 9, self.result)
def test_login(self, caseInfo): method = caseInfo['method'] url = handlerMid.yaml['url']['domain'] + caseInfo['case_url'] data = json.loads(caseInfo['case_data']) headers = json.loads(caseInfo['headers']) expected_results = eval(caseInfo['case_expected']) # 设置登录成功用例的账号和密码 if data['mobile_phone'] == "#login_phone#" and data['pwd'] == "#pwd#": data["mobile_phone"] = handlerMid.yaml["login_success"][ "mobile_phone"] data["pwd"] = handlerMid.yaml["login_success"]["pwd"] # 登录失败手机号未注册(random_new_phoneno()随机数获取电话号码) if data['mobile_phone'] == "#newPhone#": data["mobile_phone"] = data["mobile_phone"].replace( "#newPhone", get_phone.random_new_phoneno()) # 登录失败密码为空或错误 (old_phoneno()从数据库中查找一个存在的电话号码) if data['mobile_phone'] == "#oldPhone#": data["mobile_phone"] = data["mobile_phone"].replace( "#oldPhone", get_phone.old_phoneno()) # 访问接口 res = requests_handler.visit(url, method=method, json=data, headers=headers) try: for key, value in expected_results.items(): self.assertEqual(value, res.json()[key]) logger.info("第 {} 条测试用例通过".format(caseInfo["case_id"])) handlerMid.excel.update_excel('login', caseInfo["case_id"] + 1, 9, 'pass') except AssertionError as e: handlerMid.excel.update_excel('login', caseInfo["case_id"] + 1, 9, 'fail') logger.error("测试用例无法通过,预期结果:{}!=实际结果:{}".format( expected_results, res.json())) logger.error(traceback.format_exc()) raise e
def test_recharge(self, test_info): # 充值接口的访问 data = test_info["data"] if "#member_id#" in data: data = data.replace("#member_id#", str(self.member_id)) headers = test_info["headers"] if "#token#" in headers: headers = headers.replace("#token#", self.token) data = json.loads(data) headers = json.loads(headers) # 查询之前的余额 Decimal 类型 user_info = self.db.query( "SELECT leave_amount FROM futureloan.member WHERE id={}".format( self.member_id)) before_money = user_info["leave_amount"] resp = requests_handler.visit(url=env_data.yaml["host"] + test_info["url"], method=test_info["method"], headers=headers, json=data) expected = json.loads(test_info["expected"]) self.assertEqual(expected["code"], resp["code"]) self.assertEqual(expected["msg"], resp["msg"]) # 充值成功需要校验数据库 # 充值之前的金额 + 充值金额 == 充值之后的余额 if resp["code"] == 0: user_info = self.db.query( "SELECT leave_amount FROM futureloan.member WHERE id={}". format(self.member_id)) after_money = user_info["leave_amount"] # a = before_money + data["amount"] == after_money self.assertTrue(before_money + Decimal(str(data["amount"])) == after_money)
def test_audit(self, test_info): # 数据替换 data = test_info["data"] if "#loan_id#" in data: data = data.replace("#loan_id#", str(self.loan_id)) if "#pass_loan_id#" in data: pass_loan = self.db.query( "SELECT * FROM futureloan.loan WHERE status !=1;") data = data.replace("#pass_loan_id#", str(pass_loan["id"])) data = eval(data) # 替换 headers headers = test_info["headers"] if "#admin_token#" in headers: headers = headers.replace("#admin_token#", self.admin_token) if "#token#" in headers: headers = headers.replace("#token#", self.token) headers = eval(headers) resp = requests_handler.visit(url=env_data.yaml["host"] + test_info["url"], method=test_info["method"], headers=headers, json=data) expected = json.loads(test_info["expected"]) self.assertEqual(expected["code"], resp["code"]) self.assertEqual(expected["msg"], resp["msg"]) if resp["code"] == 0: # 验证数据库状态 loan = self.db.query( "SELECT * FROM futureloan.loan WHERE id={}".format( self.loan_id)) self.assertEqual(expected["status"], loan["status"])