def test_cases(self, case): # 准备测试数据 url = conf.get('env', 'url') + case['url'] method = case['method'] headers = {'Authorization': CaseData.token} CaseData.case_name = random_data() case['data'] = replace_data(case['data']) data = eval(case['data']) expected = eval(case['expected']) row = case['case_id'] + 1 # 获取结果 response = self.request.send(url=url, method=method, headers=headers, json=data) res = response.json() status = response.status_code # 对预期结果和相应结果进行断言 try: self.assertEqual(expected['status'], status) if '成功' not in case['title']: self.assertIn(expected['msg'], str(res.values())) except AssertionError as E: print('预期结果:', expected) print('实际结果:', status, 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='通过')
def test_register(self, case): # 第一步:准备用例数据 url = conf.get("env", "url") + case["url"] method = case["method"] # 生成一个手机号码 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 = self.request.send(url=url, method=method, json=data, headers=headers) res = response.json() # 第三步:断言(比对预期结果和实际结果) try: self.assertEqual(expected["code"], res["code"]) self.assertEqual(expected["msg"], res["msg"]) if case["check_sql"]: sql = "SELECT * FROM futureloan.member WHERE mobile_phone={}".format(data["mobile_phone"]) count = self.db.find_count(sql) self.assertEqual(1, count) except AssertionError as e: 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_info(self, case): # 第一步:准备用例数据 url = conf.get("env", "url") + replace_data(case["url"]) method = case["method"] # 替换参数中的用户id headers = eval(conf.get("env", "headers")) headers["Authorization"] = getattr(CaseDate, "token_value") # 在请求头中加入setupclass中提取出来的token expected = eval(case["expected"]) row = case["case_id"] + 1 # 第二步:发送请求,获取结果 response = self.request.send(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_regiter(self, case): # 准备测试数据 CaseData.username = self.random_user() CaseData.email = self.random_email() url = conf.get('env', 'url') + replace_data(case['url']) method = case['method'] case['data'] = replace_data(case['data']) data = eval(case['data']) expected = eval(case['expected']) row = case['case_id'] + 1 # 获取结果 response = self.request.send(url=url, method=method, json=data) res = response.json() status = response.status_code # 对预期结果和相应结果进行断言 try: self.assertEqual(expected['status'], status) if case['title'] != '注册成功': if case['method'].lower() == 'get': self.assertEqual(expected['count'], res['count']) else: self.assertIn(expected['msg'], str(res.values())) except AssertionError as E: print('预期结果:', expected) print('实际结果:', status, 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='通过')
def test_mainflow(self, case): # 准备测试数据 CaseData.username = self.random_user() CaseData.email = self.random_email() CaseData.project_name = random_data() CaseData.interfaces = random_data() CaseData.case_name = random_data() url = conf.get('env', 'url') + replace_data(case['url']) method = case['method'] case['data'] = replace_data(case['data']) data = eval(case['data']) expected = eval(case['expected']) row = case['case_id'] + 1 # 获取结果 if case['interface'] != 'register' or case['interface'] != 'login': headers = {'Authorization': CaseData.token} response = self.request.send(url=url, method=method, headers=headers, json=data) else: response = self.request.send(url=url, method=method, json=data) res = response.json() status = response.status_code if case['interface'] == 'login': CaseData.token = 'JWT ' + jsonpath.jsonpath(res, '$.token')[0] # 对预期结果和相应结果进行断言 try: self.assertEqual(expected['status'], status) except AssertionError as E: print('预期结果:', expected) print('实际结果:', status, 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='通过')
def test01_browse_goods(self): # try: # 定位个人中心,然后点击 goods = B.find_element(P.goods) B.click(goods) # 定位个人中心页面中的个人中心字样 time.sleep(2) goodscentre = B.find_element(P.goodscentre) B.click(goodscentre) time.sleep(2) goodsdata = B.find_element(P.goodsdata) B.click(goodsdata) time.sleep(3) offline_text = B.get_text(P.offlinegoods) print(offline_text) try: assert offline_text == "线下平台商品" except Exception as e: # raise NameError("当前页面不包含%s" % (login_sucees_text)) log.error('用例%s执行不通过' % (sys._getframe().f_code.co_name)) # # format格式化,把case中的title写入{}中 log.exception(e) raise e else: log.info('用例%s执行通过' % (sys._getframe().f_code.co_name))
def test_login(self, case): # 第一步:准备用例数据 url = conf.get("env", "url") + case["url"] method = case["method"] data = eval(case["data"]) headers = eval(conf.get("env", "headers")) expected = eval(case["expected"]) row = case["case_id"] + 1 # 第二步:发送请求,获取结果 response = self.request.send(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: 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_info(self, case): # 第一步,准备用例数据 url = conf.get("env", "url") + case["url"] method = case["method"] headers = eval(conf.get("env", "headers")) headers["Authorization"] = getattr(CaseData, "admin_token_value") expected = eval(case["expected"]) row = case["case_id"] + 1 # 第二步,发送请求,获取结果 response = self.request.send(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: self.excel.write_data(row=row, column=8, value="未通过") print("预期结果", expected) print("实际结果", res) log.error("用例{}执行未通过".format(case["title"])) log.exception(e) raise e else: self.excel.write_data(row=row, column=8, value="通过") print("预期结果", expected) print("实际结果", res) log.error("用例{}执行通过".format(case["title"]))
def test_add(self, case): # 第一步:准备数据 url = conf.get("env", "url") + case["url"] headers = eval(conf.get("env", "headers")) headers["Authorization"] = getattr(CaseDate, "admin_token_value") data = eval(replace_data(case["data"])) expected = eval(case["expected"]) method = case["method"] row = case["case_id"] + 1 # 第二步:发请求获取实际结果 response = self.request.send(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_login(self, case): # 准备用例数据 url = conf.get("env", "url") + case["url"] data = eval(case["data"]) headers = eval(conf.get("env", "headers")) method = case["method"] expected = eval(case["expected"]) row = case["case_id"] + 1 # 发送请求 reponse = self.send.send_requests(url=url, method=method, headers=headers, json=data) res = reponse.json() # 断言 try: self.assertEqual(expected["code"], res["code"]) self.assertEqual(expected["msg"], res["msg"]) except AssertionError as e: self.excel.write_data(row=row, column=8, value="不通过") log.error("用例:{} ,执行".format(case["title"]) + color.white_red("不通过")) log.exception(e) raise e else: self.excel.write_data(row=row, column=8, value="通过") log.info("用例:{} ,执行".format(case["title"]) + color.white_green("通过"))
def test_withdraw(self, case): # 准备用例数据 url = conf.get("env", "url") + case["url"] case["data"] = case["data"].replace("#member_id#", str(self.member_id)) data = eval(case["data"]) headers = eval(conf.get("env", "headers")) headers["Authorization"] = self.token_value method = case["method"] expected = eval(case["expected"]) row = case["case_id"] + 1 # 发送请求前的金额 sql = "select leave_amount from futureloan.member where mobile_phone = {}".format( conf.get("test_case", "mobile_phone")) pre_money = self.basedata.find_one(sql=sql)["leave_amount"] # 发送请求 response = self.request.send_requests(method=method, url=url, json=data, headers=headers) res = response.json() # 断言 try: self.assertEqual(expected["code"], res["code"]) self.assertEqual(expected["msg"], res["msg"]) if expected["code"] == 0: end_money = self.basedata.find_one(sql=sql)["leave_amount"] self.assertEqual(pre_money-end_money,Decimal(str(data["amount"]))) except AssertionError as e: print("预期结果:",expected) print("实际结果:",res) self.execl.write_data(row=row, column=8, value="未通过") log.error("用例:{} ,执行".format(case["title"]) + color.white_red("未通过")) log.exception(e) raise e else: self.execl.write_data(row=row, column=8, value="通过") log.info("用例:{},执行".format(case["title"]) + color.white_green("通过"))
def test01_edit_goods(self): # try: # 定位个人中心,然后点击 goods = B.find_element(P.goods) B.click(goods) # 定位个人中心页面中的个人中心字样 time.sleep(2) goodscentre = B.find_element(P.goodscentre) B.click(goodscentre) time.sleep(2) goodsdata = B.find_element(P.goodsdata) B.click(goodsdata) time.sleep(3) editbtn = B.find_element(P.edit) B.click(editbtn) time.sleep(1) # ran = random.choice('abcdefghiklmnopqrstuvwxyz') B.send_keys(B.find_element(P.goodsname), ran) B.click(B.find_element(P.gencode)) B.send_keys(B.find_element(P.priceout), ran) B.scroll() B.click(B.find_element(P.submit)) time.sleep(1) add_success_text = B.get_text(P.add_success) print(add_success_text) try: assert add_success_text == "修改成功" except Exception as e: # raise NameError("当前页面不包含%s" % (login_sucees_text)) log.error('用例%s执行不通过' % (sys._getframe().f_code.co_name)) # # format格式化,把case中的title写入{}中 log.exception(e) raise e else: log.info('用例%s执行通过' % (sys._getframe().f_code.co_name))
def test_projects(self, case): # 第一步:准备用例数据 url = conf.get("env", "url") + case["url"] method = case["method"] # 准备请求头 headers = {"Authorization": getattr(CaseDate, "token")} # 替换用例数据中的参数化 data = eval(replace_data(case["data"])) # 替换预期结果中的数据 expected = eval(replace_data(case["expected"])) row = case["case_id"] + 1 # 第二步:发送请求,获取结果 response = self.request.send(url=url, method=method, json=data, headers=headers) res = response.json() try: self.assert_dict_item(expected, res) except AssertionError as e: 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_invest(self,case): #登录 title =case['title'] row=case['case_id'] method=case['method'] url=conf.get('env','url')+case['url'] chk_sql =case['chk_sql'] data = case['data'] data=eval(self.replacedata.replacedata(data)) expected=eval(case['expected']) #chk_sql=case['chk_sql'] if case['case_id'] ==2 : send_audit =SendRequest() print('不审批,进行投资') print(title,url,data) res_info=send_audit.sendrequest(method=method,url=url,headers=self.headers_admin,json=data) res_info=res_info.json() elif case['case_id'] == 3: send_audit =SendRequest() print('审批:投资------先审批,再投资') audit_data='{"loan_id":#loan_id#,"approved_or_not":"true"}' audit_url='http://api.lemonban.com/futureloan//loan/audit' audit_data=eval(self.replacedata.replacedata(audit_data)) res_audit=send_audit.sendrequest(method='PATCH',url=audit_url,headers=self.headers_admin,json=audit_data) print('审批数据:',audit_data) print('审批结果:',res_audit.json()) print(title,url,data) res_info=send_audit.sendrequest(method=method,url=url,headers=self.headers_admin,json=data) res_info=res_info.json() else: send_audit =SendRequest() print('投资或登录------') print(title,url,data) res_info=send_audit.sendrequest(method=method,url=url,headers=self.headers_admin,json=data) res_info=res_info.json() if case['interface'] == 'login': print('审核账号登录:',res_info) ReplaceData.member_id=jsonpath.jsonpath(res_info,'$..id')[0] token = jsonpath.jsonpath(res_info,'$..token')[0] token_type = jsonpath.jsonpath(res_info,'$..token_type')[0] self.headers_admin['Authorization']='{} {}'.format(token_type,token) try : print('实际结果:{}'.format(res_info)) print('期望结果:{}'.format(expected)) if chk_sql : sql_data_end=self.connet.select_data(sql=self.sql) leave_amount_end=sql_data_end['leave_amount'] #self.assertEqual(Decimal(str(data['amount'])),(leave_amount_start-leave_amount_end)) self.assertEqual(expected['code'],res_info['code']) self.assertEqual(expected['msg'],res_info['msg']) self.readexcel.write_excel(row=row,column=8,value='pass') log.info('{}用例测试通过'.format(case['title'])) except AssertionError as e : self.readexcel.write_excel(row=row,column=8,value='fail') log.error('{}用例测试不通过'.format(case['title'])) log.exception(e) raise e
def test_recharge(self, case): # 第一步,准备用例数据 url = conf.get("env", "url") + case["url"] method = case["method"] # 替换参数中的用户ID # case["data"] = case["data"].replace("#member_id#", str(self.member_id)) case["data"] = replace_data(case["data"]) data = eval(case["data"]) # 在请求体中加入时间戳和签名 sign_info = HandleSign.generate_sign(getattr(CaseData, "token")) data.update(sign_info) headers = eval(conf.get("env", "headers")) headers["Authorization"] = getattr(CaseData, "token_value") expected = eval(case["expected"]) row = case["case_id"] + 1 if case["check_sql"]: # 查询当前用户的余额 sql = "SELECT leave_amount FROM futureloan.member WHERE mobile_phone={}".format( conf.get("test_data", "phone")) start_money = self.db.find_one(sql)["leave_amount"] # 第二步,发送请求,获取结果 response = self.request.send(url=url, method=method, json=data, headers=headers) res = response.json() if case["check_sql"]: # 查询当前用户的余额 sql = "SELECT leave_amount FROM futureloan.member WHERE mobile_phone={}".format( conf.get("test_data", "phone")) end_money = self.db.find_one(sql)["leave_amount"] # 第三步,断言比对预期结果和实际结果 try: self.assertEqual(expected["code"], res["code"]) self.assertEqual(expected["msg"], res["msg"]) # 判断是否需要sql校验 if case["check_sql"]: self.assertEqual(end_money - start_money, Decimal(str(data["amount"]))) 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.error("用例{}执行通过".format(case["title"]))
def test_withdraw(self, case): # 第一步:准备用例数据 url = conf.get("env", "url") + case["url"] case["data"] = case["data"].replace("#phone#", conf.get("test_data", "phone")) case["data"] = case["data"].replace("#pwd#", conf.get("test_data", "pwd")) headers = eval(conf.get("env", "headers")) # 判断是否是取现接口,取现接口则加上请求头 if case["interface"].lower() == "withdraw": headers["Authorization"] = self.token_value case["data"] = case["data"].replace("#member_id#", str(self.member_id)) data = eval(case["data"]) expected = eval(case["expected"]) method = case["method"] row = case["case_id"] + 1 # 判断是否需要进行sql校验 if case["check_sql"]: sql = case["check_sql"].format(conf.get("test_data", "phone")) start_money = self.db.find_one(sql)["leave_amount"] # 第二步:调用接口,获取实际结果 response = self.request.send(url=url, method=method, json=data, headers=headers) res = response.json() # 判断是否是登录接口 if case["interface"].lower() == "login": # 提取用户id保存为类属性 TestWithdraw.member_id = jsonpath.jsonpath(res, "$..id")[0] token = jsonpath.jsonpath(res, "$..token")[0] token_type = jsonpath.jsonpath(res, "$..token_type")[0] # 提取token,保存为类属性 TestWithdraw.token_value = token_type + " " + token # 第三步:断言(比对预期结果和实际结果) try: self.assertEqual(expected["code"], res["code"]) self.assertEqual(expected["msg"], res["msg"]) if case["check_sql"]: sql = case["check_sql"].format(conf.get("test_data", "phone")) end_money = self.db.find_one(sql)["leave_amount"] # 比对取现金额是否正确 self.assertEqual(Decimal(str(data["amount"])), start_money - end_money) 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_loan(self, case): # 准备用例数据 url = conf.get("env", "url") + case["url"] headers = eval(conf.get("env", "headers")) headers["Authorization"] = getattr(CaseData, "token_value") case["data"] = CaseData.replace_data(case["data"]) data = eval(case["data"]) expected = eval(case["expected"]) row = case["case_id"] + 1 method = case["method"] # 发送请求 # 第一种:通过新增项目数量进行断言 # if case["check_sql"] ==1: # sql = "select * from futureloan.loan" # start_count = self.basedata.find_count(sql) # 第二种:通过新增项目id进行断言 if case["check_sql"] == 1: sql = "select MAX(id) as id from futureloan.loan" start_id = self.basedata.find_one(sql)["id"] response = self.request.send_requests(method=method, url=url, headers=headers, json=data) res = response.json() # 断言 try: self.assertEqual(expected["code"], res["code"]) self.assertEqual(expected["msg"], res["msg"]) # 通过新增项目数量断言 # if case["check_sql"] ==1: # sql = "select * from futureloan.loan" # end_count = self.basedata.find_count(sql) # self.assertEqual(end_count-start_count,1) # 通过新增项目id进行断言 if case["check_sql"] == 1: sql = "select MAX(id) as id from futureloan.loan where member_id = {}".format( getattr(CaseData, "member_id")) end_id = self.basedata.find_one(sql)["id"] self.assertEqual(end_id, start_id + 1) 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: print("预期结果:", expected) print("实际结果:", res) self.excel.write_data(row=row, column=8, value="通过") log.error("用例:{}执行通过".format(case["title"]))
def test_withdraw(self, case): # 准备用例数据 url = conf.get("env", "url") + case["url"] headers = eval(conf.get("env", "headers")) case["data"] = CaseData.replace_data(case["data"]) if case["interface"] == "withdraw": headers["Authorization"] = getattr(CaseData, "token_value") data = eval(case["data"]) expected = eval(case["expected"]) method = case["method"] row = case["case_id"] + 1 # 发送请求 # 发送请求前查询数据库leave_amount金额 if expected["code"] == 0: sql = "select leave_amount from futureloan.member where mobile_phone = {}".format( conf.get("test_case", "mobile_phone")) start_money = self.basedata.find_one(sql)["leave_amount"] reponse = self.request.send_requests(method=method, url=url, json=data, headers=headers) res = reponse.json() # 执行登录用例后,提取返回的token和member_id if case["interface"] == "login": token_type = jsonpath.jsonpath(res, "$..token_type")[0] token = jsonpath.jsonpath(res, "$..token")[0] CaseData.token_value = token_type + " " + token CaseData.member_id = str(jsonpath.jsonpath(res, "$..id")[0]) # 断言 try: self.assertEqual(expected["code"], res["code"]) self.assertEqual(expected["msg"], res["msg"]) if expected["code"] == 0 and case["interface"] != "login": sql = "select leave_amount from futureloan.member where mobile_phone = {}".format( conf.get("test_case", "mobile_phone")) end_money = self.basedata.find_one(sql)["leave_amount"] self.assertEqual(start_money - end_money, Decimal(str(data["amount"]))) 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_recharge(self, case): # 第一步:准备用例数据 url = conf.get("env", "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(CaseDate, "token_value") # 在请求头中加入setupclass中提取出来的token expected = eval(case["expected"]) row = case["case_id"] + 1 # 第二步:发送请求,获取结果 # 发送请求之前,获取用余额 if case["check_sql"]: sql = "SELECT leave_amount FROM futureloan.member WHERE mobile_phone={}".format( conf.get("test_data", "phone")) # 查询当前用户的余额 start_money = self.db.find_one(sql)["leave_amount"] response = self.request.send(url=url, method=method, json=data, headers=headers) res = response.json() # 发送请求之后,获取用余额 if case["check_sql"]: sql = "SELECT leave_amount FROM futureloan.member WHERE mobile_phone={}".format( conf.get("test_data", "phone")) # 查询当前用户的余额 end_money = self.db.find_one(sql)["leave_amount"] # 第三步:断言(比对预期结果和实际结果) try: self.assertEqual(expected["code"], res["code"]) self.assertEqual(expected["msg"], res["msg"]) # 判断示范需要进行sql校验 if case["check_sql"]: self.assertEqual(end_money - start_money, Decimal(str(data["amount"]))) 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_main_stream(self, case): # 第一步:准备用例数据 url = conf.get("env", "url") + replace_data(case["url"]) method = case["method"] if case["interface"] == "register": # 注册接口,则随机生成一个手机号码 CaseDate.mobilephone = self.random_phone() data = eval(replace_data(case["data"])) headers = eval(conf.get("env", "headers")) # 判断是否是登录接口,不是登录接口则需要添加token if case["interface"] != "login" and case["interface"] != "register": headers["Authorization"] = getattr(CaseDate, "token_value") expected = eval(case["expected"]) row = case["case_id"] + 1 # 第二步:发送请求,获取结果 print("请求参数:", data) response = self.request.send(url=url, method=method, json=data, headers=headers) res = response.json() print("预期结果", expected) print("实际结果", res) # 发送请求后,判断是否是登陆接口 if case["interface"].lower() == "login": # 提取用户id保存为类属性 CaseDate.member_id = str(jsonpath.jsonpath(res, "$..id")[0]) token = jsonpath.jsonpath(res, "$..token")[0] token_type = jsonpath.jsonpath(res, "$..token_type")[0] # 提取token,保存为类属性 CaseDate.token_value = token_type + " " + token # 判断是否是加标的用例,如果是的则请求标id if case["interface"] == "add": CaseDate.loan_id = str(jsonpath.jsonpath(res, "$..id")[0]) # 第三步:断言(比对预期结果和实际结果) try: self.assertEqual(expected["code"], res["code"]) self.assertIn(expected["msg"], res["msg"]) except AssertionError as e: 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 testcase_audit(self,case): # case_id title method url data expected result chk_sql interface #注意请求头每次执行用例后,会被重新赋值所以需要在登录后将请求头保存在另外的类变量 #各用例模块取名最好单独化,特别是在类变量,避免相互影响 send_audit =SendRequest() title =case['title'] row=case['case_id'] method=case['method'] url=conf.get('env','url')+case['url'] chk_sql =case['chk_sql'] data = case['data'] data=eval(self.replacedata.replacedata(data)) expected=eval(case['expected']) chk_sql=case['chk_sql'] if chk_sql : sql_data_start=self.connet.select_data(sql=self.sql) leave_amount_start=sql_data_start['leave_amount'] res_info=send_audit.sendrequest(method=method,url=url,headers=self.headers_admin,json=data) res_info=res_info.json() if case['interface'] == 'login': print('审核账号登录:',res_info) ReplaceData.member_id=jsonpath.jsonpath(res_info,'$..id')[0] token = jsonpath.jsonpath(res_info,'$..token')[0] token_type = jsonpath.jsonpath(res_info,'$..token_type')[0] self.headers_admin['Authorization']='{} {}'.format(token_type,token) #审核状态不在待审核状态的ID,重新审核一次 if case['case_id']==4: print('第二次审核开始') print('审核数据:',data) res_info=send_audit.sendrequest(method=method,url=url,headers=self.headers_admin,json=data) res_info=res_info.json() try : print('实际结果:{}'.format(res_info)) print('期望结果:{}'.format(expected)) if chk_sql : sql_data_end=self.connet.select_data(sql=self.sql) leave_amount_end=sql_data_end['leave_amount'] #self.assertEqual(Decimal(str(data['amount'])),(leave_amount_start-leave_amount_end)) self.assertEqual(expected['code'],res_info['code']) self.assertEqual(expected['msg'],res_info['msg']) self.readexcel.write_excel(row=row,column=8,value='pass') log.info('{}用例测试通过'.format(case['title'])) except AssertionError as e : self.readexcel.write_excel(row=row,column=8,value='fail') log.error('{}用例测试不通过'.format(case['title'])) log.exception(e) raise e
def test01_delete_online_goods(self): # try: # 定位个人中心,然后点击 goods = B.find_element(P.goods) B.click(goods) # 定位个人中心页面中的个人中心字样 time.sleep(2) goodscentre = B.find_element(P.goodscentre) B.click(goodscentre) time.sleep(2) goodsdata = B.find_element(P.goodsdata) B.click(goodsdata) time.sleep(3) B.click(B.find_element(P.onlinegoods_platform)) time.sleep(1) B.click(B.find_element(P.gouxuan_online)) time.sleep(1) B.hold(B.find_element(P.piliang_online)) time.sleep(1) #下架 B.click(B.find_element(P.piliang_xiajia)) time.sleep(1) # B.refresh() time.sleep(2) # B.click(B.find_element(P.gouxuan_online)) # time.sleep(2) a = B.find_element(P.piliang_2) B.hold(a) #删除 time.sleep(1) B.click(B.find_element(P.piliang_delete)) time.sleep(1) # B.click(B.find_element(P.delete_alert)) B.click(B.find_element(P.delete_confirm)) del_suc_text = B.get_text(P.del_suc_text) print(del_suc_text) try: assert del_suc_text == "商品删除成功" except Exception as e: # raise NameError("当前页面不包含%s" % (login_sucees_text)) log.error('用例%s执行不通过' % (sys._getframe().f_code.co_name)) # # format格式化,把case中的title写入{}中 log.exception(e) raise e else: log.info('用例%s执行通过' % (sys._getframe().f_code.co_name))
class TestRecharge(unittest.TestCase): excel = Readexcel(os.path.join(data_dir, "api_cases_excel.xlsx"), "recharge") cases = excel.read_data() send = HandleRequests() basedata = HandleDB() @classmethod def setUpClass(cls): url = conf.get("env", "url") + "/member/login" data = { "mobile_phone": conf.get("test_case", "mobile_phone"), "pwd": conf.get("test_case", "pwd") } headers = eval(conf.get("env", "headers")) method = "post" login_response = cls.send.send_requests(url=url, method=method, headers=headers, json=data) data = login_response.json() token_type = jsonpath.jsonpath(data, "$..token_type")[0] token = jsonpath.jsonpath(data, "$..token")[0] cls.token_value = token_type + " " + token cls.member_id = jsonpath.jsonpath(data, "$..id")[0] @data(*cases) def test_recharge(self, case): # 准备用例数据 url = conf.get("env", "url") + case["url"] headers = eval(conf.get("env", "headers")) headers["Authorization"] = self.token_value case["data"] = case["data"].replace("#member_id#", str(self.member_id)) data = eval(case["data"]) method = case["method"] expected = eval(case["expected"]) row = case["case_id"] + 1 # 发送请求 if eval(case["expected"])["code"] == 0: sql = "select leave_amount from futureloan.member where mobile_phone={}".format( conf.get("test_case", "mobile_phone")) pre_data = self.basedata.find_one(sql)["leave_amount"] response = self.send.send_requests(method=method, url=url, json=data, headers=headers) res = response.json() # 断言 try: self.assertEqual(expected["code"], res["code"]) self.assertEqual(expected["msg"], res["msg"]) if expected["code"] == 0: end_data = self.basedata.find_one(sql)["leave_amount"] self.assertEqual(Decimal(str(data["amount"])), end_data - pre_data) except AssertionError as e: print("预期结果:", expected) print("实际结果:,", res) self.excel.write_data(row=row, column=8, value="不通过") log.error("用例:{} ,执行".format(case["title"]) + color.white_red("不通过")) log.exception(e) raise e else: self.excel.write_data(row=row, column=8, value="通过") log.info("用例:{} ,执行".format(case["title"]) + color.white_green("通过"))
def test_register(self, case): # 准备用例数据 url = conf.get("env", "url") + case["url"] headers = eval(conf.get("env", "headers")) case["data"] = case["data"].replace("#phone#",self.randam_phone()) data = eval(case["data"]) method = case["method"] expected = eval(case["expected"]) row = case["case_id"] + 1 # 发送请求 response = self.send.send_requests(method=method, url=url, json=data, headers=headers) res = response.json() id = jsonpath.jsonpath(res, "$..id") # 读取数据库的数据 sql = "select * from futureloan.member where mobile_phone = {}".format(self.randam_phone()) sql_data = self.basedata.find_all(sql) # 断言 try: self.assertEqual(expected["code"], res["code"]) self.assertEqual(expected["msg"], res["msg"]) if expected["code"] == 0: for i in sql_data: bd_phone = i["mobile_phone"] bd_type = i["type"] bd_reg_name = i["reg_name"] bd_id = i["id"] self.assertEqual(expected["mobile_phone"], bd_phone) self.assertEqual(expected["type"], bd_type) self.assertEqual(expected["reg_name"], bd_reg_name) self.assertEqual(0, i["leave_amount"]) self.assertEqual(id, bd_id) except AssertionError as e: self.excel.write_data(row=row, column=8, value="不通过") log.error("用例:{} ,执行".format(case["title"]) + color.white_red("不通过")) log.exception(e) raise e else: print("预期结果:", expected) print("实际结果:", res) self.excel.write_data(row=row, column=8, value="通过") log.info("用例:{} ,执行".format(case["title"]) + color.white_green("通过"))
def test_main_stream(self, case): # 准备用例数据 url = conf.get("env", "url") + CaseData.replace_data(case["url"]) headers = eval(conf.get("env", "headers")) if case["interface"] != "login" and case["interface"] != "register": headers["Authorization"] = getattr(CaseData, "token_value") if case["interface"] == "register": CaseData.mobilephone = self.random_phone() case["data"] = str(CaseData.replace_data(case["data"])) data = eval(case["data"]) method = case["method"] expected = eval(case["expected"]) row = case["case_id"] + 1 # 发送请求并获取结果 response = self.request.send_requests(url=url, method=method, headers=headers, json=data) res = response.json() print("预期结果:", expected) print("实际结果:", res) # 登录后提取token和member_id并保存为类属性 if case["interface"] == "login": token_type = jsonpath.jsonpath(res, "$..token_type")[0] token = jsonpath.jsonpath(res, "$..token")[0] CaseData.token_value = token_type + " " + token CaseData.member_id = str(jsonpath.jsonpath(res, "$..id")[0]) # 加标后提取项目id并保存为类属性 if case["interface"] == "add": CaseData.loan_id = str(jsonpath.jsonpath(res, "$..id")[0]) # 断言 try: self.assertEqual(expected["code"], res["code"]) self.assertEqual(expected["msg"], res["msg"]) except AssertionError as e: 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 test001_reset_pwd(self, case): url = conf.get("env", "url") + case["url"] # print(url) method = case['method'] # print(method) data = eval(case['data']) # print(data) # eval这个内置函数的作用:执行一个字符串表达式,并且返回执行后的结果 headers = eval(conf.get("env", "headers")) # print(headers) # 从配置文件文件config.ini中取header等常用请求头信息或者接口参数 expected = eval(case['expected']) # print(expected) # 从excel取expected预期结果内容 row = case['case_id'] + 1 # 每跑一行,case_id + 1 # 第二步,发送接口请求 response = self.request.send(method=method, url=url, headers=headers, data=data) print(response.text) result = response.json() print(result) # 第三步:接口的断言 try: # 期待值和实际结果值对比断言 self.assertEqual(expected['code'], result['code']) self.assertEqual(expected['msg'], result['msg']) except Exception as e: # 定义异常,异常如何 self.excel.write_data(row, column=8, value='未通过') # 写入未通过结果 log.error('用例{}执行不通过'.format(case['title'])) # 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, case): # 第一步,准备用例数据 url = conf.get("env", "url") + case["url"] method = case["method"] # 替换参数中的用户ID # case["data"] = case["data"].replace("#loan_id#", self.loan_id) case["data"] = replace_data(case["data"]) data = eval(case["data"]) # data = eval(case["data"]) headers = eval(conf.get("env", "headers")) headers["Authorization"] = getattr(CaseData, "admin_token_value") expected = eval(case["expected"]) row = case["case_id"] + 1 # 第二步,发送请求,获取结果 response = self.request.send(url=url, method=method, json=data, headers=headers) res = response.json() if res["code"] == 0 and case["title"] == "审核通过": CaseData.pass_loan_id = str(data["loan_id"]) # 第三步,断言比对预期结果和实际结果 try: self.assertEqual(expected["code"], res["code"]) self.assertEqual(expected["msg"], res["msg"]) if case["check_sql"]: sql = replace_data(case["check_sql"]) status = self.db.find_one(sql)["status"] self.assertEqual(expected["status"], status) 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.error("用例{}执行通过".format(case["title"]))
def testcase_withdraw(self, case): # case_id title method url data expected result chk_sql interface row = case['case_id'] + 1 method = case['method'] url = self.base_url + case['url'] data = case['data'] data = eval(self.replacedata.replacedata(data)) expected = eval(case['expected']) chk_sql = case['chk_sql'] if chk_sql: sql_data_start = self.connet.select_data(sql=self.sql) leave_amount_start = sql_data_start['leave_amount'] res_info = self.send.sendrequest(method=method, url=url, headers=self.headers, json=data) res_info = res_info.json() if case['interface'] == 'login': print(res_info) ReplaceData.member_id = jsonpath.jsonpath(res_info, '$..id')[0] token = jsonpath.jsonpath(res_info, '$..token')[0] token_type = jsonpath.jsonpath(res_info, '$..token_type')[0] self.headers['Authorization'] = '{} {}'.format(token_type, token) try: print('实际结果:{}'.format(res_info)) print('期望结果:{}'.format(expected)) if chk_sql: sql_data_end = self.connet.select_data(sql=self.sql) leave_amount_end = sql_data_end['leave_amount'] self.assertEqual(Decimal(str(data['amount'])), (leave_amount_start - leave_amount_end)) self.assertEqual(expected['code'], res_info['code']) self.assertEqual(expected['msg'], res_info['msg']) self.readexcel.write_excel(row=row, column=8, value='pass') log.info('{}用例测试通过'.format(case['title'])) except AssertionError as e: self.readexcel.write_excel(row=row, column=8, value='fail') log.error('{}用例测试不通过'.format(case['title'])) log.exception(e) raise e
def test_login(self, case): """登陆的测试用例""" # 第一步:准备用例数据 url = conf.get("evn", "url") + case["url"] headers = eval(conf.get("evn", "headers")) method = case["method"] # 登陆账号使用配置文件里面预设值的 TestLogin.mobile = eval(conf.get("test_data", "mobile")) case["data"] = case["data"].replace("#mobile#", str(self.mobile)) TestLogin.password = eval(conf.get("test_data", "password")) case["data"] = case["data"].replace("#password#", str(self.password)) data = eval(case["data"]) expected = eval(case["expected"]) row = case["case_id"] + 1 #第二步:发送请求,获取结果 response = self.request.send(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: 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_invest(self, case): # 第一步,准备用例数据 url = conf.get("env", "url") + case["url"] method = case["method"] case["data"] = replace_data(case["data"]) data = eval(case["data"]) headers = eval(conf.get("env", "headers")) if case["interface"] != "login": headers["Authorization"] = getattr(CaseData, "token_value") expected = eval(case["expected"]) row = case["case_id"] + 1 # 第二步,发送请求,获取结果 response = self.request.send(url=url, method=method, json=data, headers=headers) res = response.json() if case["interface"].lower() == "login": CaseData.member_id = str(jsonpath.jsonpath(res, "$..id")[0]) token = jsonpath.jsonpath(res, "$..token")[0] token_type = jsonpath.jsonpath(res, "$..token_type")[0] CaseData.token_value = token_type + " " + token if case["interface"] == "add": CaseData.loan_id = str(jsonpath.jsonpath(res, "$..id")[0]) # 第三步,断言比对预期结果和实际结果 try: self.assertEqual(expected["code"], res["code"]) # self.assertEqual(expected["msg"], res["msg"]) self.assertIn(expected["msg"], res["msg"]) except AssertionError as e: 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.error("用例{}执行通过".format(case["title"]))