def test_login(self, case): # 第一步:准备测试数据和入参 excepted = case.excepted # url = case.url + case.interface url = my_conf.get('url', 'url') + case.url + case.interface case.data = data_replace(case.data) if "*phone*" in case.data: random_phone = self.random_phone() case.data = case.data.replace("*phone*", random_phone) request_data = eval(case.data) # 第二步:请求接口 res = HTTPRequest().request(case.method, url, request_data) # 第三步:预期对比 try: self.assertEqual(json.loads(excepted), res.json()) except AssertionError as e: self.do_excel.write_data(case.case_id + 1, 8, "Fail") logger.info("测试数据为:{}".format(request_data)) logger.info("期望结果是:{}".format(excepted)) logger.info("实际结果是:{}".format(res.json())) logger.exception(e) raise e else: self.do_excel.write_data(case.case_id + 1, 8, "Pass") logger.info("测试数据为:{}".format(request_data)) logger.info("期望结果是:{}".format(excepted)) logger.info("实际结果是:{}".format(res.json()))
def test_add(self, case): # 第一步:入参和用例数据 url = my_conf.get('url', 'url') + case.url + case.interface case.data = data_replace(case.data) if "*memberId*" in case.data: max_id = self.db.find_one("select max(id) from member")[0] memberId = max_id + 1 case.data = case.data.replace("*memberId*", str(memberId)) # 判断是否需要sql校验 if case.check_sql: case.check_sql = data_replace(case.check_sql) # 获取当前用户加标签的数量 start_count = self.db.find_count(case.check_sql)
def test(self, items): self.pr.sendMCode() # 发送短信验证码 rp = Replace() # 创建替换对象 case_id = items.case_id # 获取用例编号 url = ob.getstr('url', 'url') + items.url data = items.data # 获取数据 title = items.title # 获取用例标题 if "@verify_code@" in data: verify_code = int(getattr(ConText, 'verify_code')) + 1 data = data.replace("@verify_code@", str(verify_code)) # 用最新的验证码去替换 if title == '验证码超时': verify_code = ob.getstr("verify_phone", "verify_code") # 拿到已经超时的验证码 phone = ob.getstr("verify_phone", "phone") # 拿到发送的手机号 data = data.replace("<verify_code>", verify_code) # 替换验证码 data = data.replace("<phone>", phone) # 替换手机号码 client = Client(url) # 创建连接 data = eval(rp.replace_data(data)) # 获取请求数据 print("请求数据为:", data) except_result = str(items.except_result) # 获取预期结果,并转换为字典 print('第{}条测试用例:{}开始执行'.format(case_id, title)) re = client.service.userRegister(data) # 发送请求 acl_re = str(re.retCode) # 获取实际结果 print('实际结果:{}'.format(except_result), type(except_result)) print('预期结果:{}'.format(acl_re), type(acl_re)) print(dict(re)) # 比对实际结果与预期结果 try: self.assertEqual(except_result, acl_re) if items.check_sql: sql = rp.replace_data(items.check_sql) slect_result = self.mysql.find_result(sql) # 得到查询结果 self.assertEqual(1, slect_result) re_username = data["user_id"] # 拿到注册过的用户名 re_phone = data["mobile"] setattr(ConText, 're_username', re_username) # 将注册过后的用户名写进临时变量 setattr(ConText, 're_phone', re_phone) # 将注册过后的手机号码写进临时变量 except AssertionError as e: print('{}用例测试未通过'.format(title)) self.mylog.error('{}用例测试未通过'.format(title)) # 打印日志信息 self.excle.write(row=case_id + 1, column=8, value='未通过') # 回写测试结果 raise e # 抛出异常 else: print('{}用例测试通过'.format(title)) self.mylog.info('{}用例测试通过'.format(title)) # 打印日志信息 self.excle.write(row=case_id + 1, column=8, value='通过') # 回写测试结果 finally: self.excle.write(row=case_id + 1, column=7, value=acl_re) # 回写实际结果
def test(self, items): rp = Replace() # 创建替换对象 # 获取测试用例的数据 case_id = items.case_id # 用例数据的编号 title = items.title # 用例的标题 method = items.method # 请求方法 url = ob.getstr('url', 'url') + items.url # 请求地址 except_result = str(items.except_result) # 获得预期结果 data = items.data if items.check_sql: if items.interface == 'generateRepayments': result1 = self.mysql.find_result( rp.replace_data(items.check_sql)) # 请求前数据表中记录的个数 if "@loanId@" in items.data: max_loanId = self.mysql.select(sql="SELECT max(Id)From loan", row=1)[0] # 查到loan表的最大标id data = data.replace("@loanId@", str(max_loanId + 100)) data = eval(rp.replace_data(data)) # 替换后的申请数据 print(data) print('第{}条用例开始执行:{}'.format(case_id, title)) # 打印信息 self.mylog.info('第{}条用例开始执行:{}'.format(case_id, title)) # 写进日志 # 发送请求获取实际结果 res = HttpSession(url=url, data=data).httprequest(method=method).json()['code'] # 比对实际与预期结果 print('预期结果:{}'.format(except_result)) print('实际结果:{}'.format(res)) try: self.assertEqual(except_result, res) if items.check_sql: # 如果需要数据库校验 if items.interface == 'bidloan': investId = self.mysql.select( rp.replace_data(items.check_sql))[0][0] # 竞标得到investId setattr(ConText, 'investId', investId) # 将investId写进常量类 if items.interface == 'generateRepayments': select_result = self.mysql.find_result( rp.replace_data(items.check_sql)) # 得到投资之后结果 self.assertEqual(1, select_result - result1) # 比对查询的结果与预期的结果 except AssertionError as e: print('{}测试用例未通过'.format(title)) self.mylog.error('{}测试用例未通过,未通过的信息为{}'.format(title, e)) # 打印日志信息 self.excle.write(row=case_id + 1, column=9, value='未通过') # 回写测试结果 raise e # 抛出异常 else: print('{}测试用例通过'.format(title)) self.mylog.error('{}测试用例通过'.format(title)) # 打印日志信息 self.excle.write(row=case_id + 1, column=9, value='通过') # 回写测试结果 finally: self.excle.write(row=case_id + 1, column=8, value=res) # 回写实际结果
def test_register(self, case): # 第一步:准备测试数据和入参 excepted = case.excepted url = my_conf.get('url', 'url') + case.url + case.interface # 替换动态化参数 random_phone = self.random_phone() case.data = case.data.replace("*phone*", random_phone) request_data = eval(case.data) # 第二步:发送接口请求 res = HTTPRequest().request(case.method, url, request_data) # 第三步:比对结果 try: self.assertEqual(json.loads(excepted), res.json()) try: if case.check_sql: logger.debug("此条用例走了if语句") count = self.db.find_count( case.check_sql.replace("*phone*", random_phone)) self.assertEqual(1, count) logger.info("测试数据为:1") logger.info("期望结果是:{}".format(count)) else: logger.debug("此条用例没有走if语句") except AssertionError as e: logger.exception(e) raise e except AssertionError as e: self.do_excel.write_data(case.case_id + 1, 8, "Fail") logger.info("测试数据为:{}".format(request_data)) logger.info("期望结果是:{}".format(excepted)) logger.info("实际结果是:{}".format(res.json())) logger.exception(e) raise e else: self.do_excel.write_data(case.case_id + 1, 8, "Pass") logger.info("测试数据为:{}".format(request_data)) logger.info("期望结果是:{}".format(excepted)) logger.info("实际结果是:{}".format(res.json()))
def test(self, items): self.pr.userRegister() # 注册 rp = Replace(section1="userinfo") # 创建替换对象 case_id = items.case_id # 获取用例编号 url = ob.getstr('url', 'url') + items.url data = items.data # 获取数据 title = items.title # 获取用例标题 if "@uid@" in data: max_uid = self.mysql.select(rp.replace_data(items.check_sql))[0][0] print(max_uid) data = data.replace("@uid@", str(int(max_uid + 1))) # 用最新uid去替换 client = Client(url) # 创建连接 data = eval(rp.replace_data(data)) # 获取请求数据 print("请求数据为:", data) except_result = str(items.except_result) print('第{}条测试用例:{}开始执行'.format(case_id, title)) re = client.service.verifyUserAuth(data) # 发送请求 acl_re = str(re.retCode) # 获取实际结果 print('实际结果:{}'.format(except_result), type(except_result)) print('预期结果:{}'.format(acl_re), type(acl_re)) print(dict(re)) # 比对实际结果与预期结果 try: self.assertEqual(except_result, acl_re) if items.check_sql: if items.title == "实名认证成功": sql = rp.replace_data(items.check_sql) slect_result = self.mysql.find_result(sql) # 得到查询结果 self.assertEqual(1, slect_result) except AssertionError as e: print('{}用例测试未通过'.format(title)) self.mylog.error('{}用例测试未通过'.format(title)) # 打印日志信息 self.excle.write(row=case_id + 1, column=8, value='未通过') # 回写测试结果 raise e # 抛出异常 else: print('{}用例测试通过'.format(title)) self.mylog.info('{}用例测试通过'.format(title)) # 打印日志信息 self.excle.write(row=case_id + 1, column=8, value='通过') # 回写测试结果 finally: self.excle.write(row=case_id + 1, column=7, value=acl_re) # 回写实际结果
def test(self, items): rp = Replace() # 创建替换对象 # 获取测试用例的数据 case_id = items.case_id # 用例数据的编号 title = items.title # 用例的标题 method = items.method # 请求方法 url = ob.getstr('url', 'url') + items.url # 请求地址 except_result = str(items.except_result) # 获得预期结果 data = items.data if "@memberId@" in items.data: max_memberId = self.mysql.select(sql="SELECT max(Id)From member", row=1)[0] # 查到member表的最大标id data = data.replace("@memberId@", str(max_memberId + 100)) data = eval(rp.replace_data(data)) # 替换后的申请数据 print(data) print('第{}条用例开始执行:{}'.format(case_id, title)) # 打印信息 self.mylog.info('第{}条用例开始执行:{}'.format(case_id, title)) # 写进日志 # 发送请求获取实际结果 res = HttpSession(url=url, data=data).httprequest(method=method).json()['code'] # 比对实际与预期结果 print('预期结果:{}'.format(except_result)) print('实际结果:{}'.format(res)) try: self.assertEqual(except_result, res) except AssertionError as e: print('{}测试用例未通过'.format(title)) self.mylog.error('{}测试用例未通过,未通过的信息为{}'.format(title, e)) # 打印日志信息 self.excle.write(row=case_id + 1, column=9, value='未通过') # 回写测试结果 raise e # 抛出异常 else: print('{}测试用例通过'.format(title)) self.mylog.error('{}测试用例通过'.format(title)) # 打印日志信息 self.excle.write(row=case_id + 1, column=9, value='通过') # 回写测试结果 finally: self.excle.write(row=case_id + 1, column=8, value=res) # 回写实际结果
def test(self, items): rp = Replace() # 创建替换对象 # 获取测试用例的数据 case_id = items.case_id # 用例数据的编号 title = items.title # 用例的标题 method = items.method # 请求方法 url = ob.getstr('url', 'url') + items.url # 请求地址 except_result = str(items.except_result) # 获得预期结果 data = items.data if items.check_sql: result1 = self.mysql.find_result(rp.replace_data( items.check_sql)) # 查询投资之前invest投资该标记录的个数 amount = self.mysql.select( "SELECT LeaveAmount FROM member WHERE MobilePhone= '{}'". format(getattr(ConText, 'phone')))[0][0] # 查询投资用户投资之前的余额 if "@memberId@" in items.data: max_memberid = self.mysql.select(sql="SELECT max(Id)From member", row=1)[0] # 查到用户表的最大id data = data.replace("@memberId@", str(max_memberid + 100)) if "@loanId@" in items.data: max_loanId = self.mysql.select(sql="SELECT max(Id)From loan", row=1)[0] # 查到loan表的最大标id data = data.replace("@loanId@", str(max_loanId + 100)) data = eval(rp.replace_data(data)) # 替换后的申请数据 print(data) print('第{}条用例开始执行:{}'.format(case_id, title)) # 打印信息 self.mylog.info('第{}条用例开始执行:{}'.format(case_id, title)) # 写进日志 # 发送请求获取实际结果 res = HttpSession(url=url, data=data).httprequest(method=method).json()['code'] # 比对实际与预期结果 print('预期结果:{}'.format(except_result)) print('实际结果:{}'.format(res)) try: self.assertEqual(except_result, res) if items.check_sql: # 如果需要数据库校验 select_result = self.mysql.find_result( rp.replace_data(items.check_sql)) # 得到投资之后结果 amount1 = self.mysql.select( "SELECT LeaveAmount FROM member WHERE MobilePhone= '{}'". format(getattr(ConText, 'phone')))[0][0] # 查询投资用户投资之后的余额 bd_amount = Decimal(str(data['amount'])) # 拿到充值金额 self.assertEqual(1, select_result - result1) # 比对查询的结果与预期的结果 self.assertEqual(bd_amount, amount - amount1) # 比对余额的减少是否与投资的金额相等 except AssertionError as e: print('{}测试用例未通过'.format(title)) self.mylog.error('{}测试用例未通过,未通过的信息为{}'.format(title, e)) # 打印日志信息 self.excle.write(row=case_id + 1, column=9, value='未通过') # 回写测试结果 raise e # 抛出异常 else: print('{}测试用例通过'.format(title)) self.mylog.error('{}测试用例通过'.format(title)) # 打印日志信息 self.excle.write(row=case_id + 1, column=9, value='通过') # 回写测试结果 finally: self.excle.write(row=case_id + 1, column=8, value=res) # 回写实际结果