def test_verify_user_auth(self, case): # 拼接url地址 url = conf.get("env", "url") + case.url self.row = case.case_id + 1 ws = WebRequests() response = ws.web_request(url=url, interface='verifyUserAuth', data=case.request_data) # 成功服务器响应数据{'retCode': 0, 'retInfo': ok},需将ok --> 'ok' if 'retCode' in str(response): result = {'retCode': response['retCode'], 'retInfo': str(response['retInfo'])} # 由于测试失败返回的数据特殊{'faultcode': soap:Server, 'faultstring': 手机号码错误},只能转换为str再来断言 else: result = str(response) # 该打印的内容会显示在报告中 print("请求数据--> {}".format(case.request_data)) my_log.info("请求数据--> {}".format(case.request_data)) print("期望结果--> {}".format(case.expected_data)) my_log.info("期望结果--> {}".format(case.expected_data)) print("服务器响应数据--> {}".format(response)) my_log.info("服务器响应数据--> {}".format(response)) try: # if 'retCode' in case.expected_data: # self.assertEqual(eval(case.expected_data), result) # else: # self.assertEqual(case.expected_data, str(result)) self.assertEqual(eval(case.expected_data), response) except AssertionError as e: result = 'FAIL' my_log.exception(e) # 将异常信息记录到日志 raise e else: result = 'PASS' my_log.debug("断言结果:{}, 测试通过".format(result)) finally: self.wb.write_data(row=self.row, column=8, msg=str(response)) self.wb.write_data(row=self.row, column=9, msg=result)
def request(self, method, url, params=None, data=None, headers=None, cookies=None, json=None): method = method.lower() if method == "post": # 判断是否使用json来传参(适用于接口项目有使用json传参) if json: my_log.info("正在发送请求,请求地址:{}, 请求参数:{}".format(url, json)) return self.session.post(url=url, json=json, headers=headers, cookies=cookies) else: my_log.info("正在发送请求,请求地址:{}, 请求参数:{}".format(url, data)) return self.session.post(url=url, data=data, headers=headers, cookies=cookies) elif method == "get": my_log.info("正在发送请求,请求地址:{}, 请求参数:{}".format(url, params)) return self.session.get(url=url, params=params, headers=headers, cookies=cookies)
def setUpClass(cls): my_log.info("准备开始执行实名认证接口的测试......") cls.request = HTTPRequest2() cls.db = ExecuteMysql()
def tearDownClass(cls): my_log.info("实名认证接口测试执行完毕......") cls.request.close() cls.db.close()
def tearDownClass(cls): my_log.info("======注册接口测试执行完毕======") cls.request.close() cls.db.close()
def setUpClass(cls): my_log.info("======准备开始执行注册接口的测试======") cls.request = HTTPRequest2() cls.db = ExecuteMysql()
url = conf.get("env", "url") + case.url self.row = case.case_id + 1 webs = WebRequests() response = webs.web_request(url=url, interface='userRegister', data=case.request_data) # 该打印的内容会显示在报告中 print("请求参数--> {}".format(case.request_data)) my_log.info("请求参数--> {}".format(case.request_data)) print("期望结果--> {}".format(case.expected_data)) my_log.info("期望结果--> {}".format(case.expected_data)) print("服务器响应数据--> {}".format(response)) my_log.info("服务器响应数据--> {}".format(response)) try: self.assertEqual(eval(case.expected_data), response) except AssertionError as e: result = 'FAIL' my_log.exception(e) # 将异常信息记录到日志 raise e else: result = 'PASS' my_log.info("断言结果:{}, 测试通过".format(result)) finally: self.wb.write_data(row=self.row, column=8, msg=str(response)) self.wb.write_data(row=self.row, column=9, msg=result)
class SendMCodeTestCase(unittest.TestCase): # 拼接完整的excel路径,然后读取excel数据 wb = ReadExcel(os.path.join(DATA_DIR, file_name), "sendMCode") cases = wb.read_column_data(read_column) @classmethod def setUpClass(cls): my_log.info("======准备开始执行发送短信验证码接口的测试======") cls.request = HTTPRequest2() cls.db = ExecuteMysql() @classmethod def tearDownClass(cls): my_log.info("======发送短信验证码接口测试执行完毕======") cls.request.close() cls.db.close() @data(*cases) # 拆包,拆成几个参数 def test_send_m_code(self, case): # 替换成随机手机号码 case.request_data = data_replace(case.request_data) # 替换成随机ip case.request_data = case.request_data.replace('$ip', rand_ip()) # 拼接url地址 url = conf.get("env", "url") + case.url self.row = case.case_id + 1 # 调用封装好的webservice请求方法 webs = WebRequests() response = webs.web_request(url=url, interface='sendMCode', data=case.request_data) # 用例失败则返回的键值不是str,会报错,需将值转换为str if 'faultcode' in response: response = { 'faultcode': str(response.get('faultcode')), 'faultstring': str(response.get('faultstring')) } # 该打印的内容会显示在报告中,以及日志 print("请求参数--> {}".format(case.request_data)) my_log.info('请求参数--> {}'.format(case.request_data)) print("期望结果---> {}".format(case.expected_data)) my_log.info("期望结果---> {}".format(case.expected_data)) print("服务器响应数据--> {}".format(response)) my_log.info("服务器响应数据--> {}".format(response)) try: if 'retCode' in case.expected_data: self.assertEqual(eval(case.expected_data), response) else: self.assertEqual(case.expected_data, str(response)) except AssertionError as e: result = 'FAIL' self.wb.write_data(row=self.row, column=9, msg=result) my_log.exception(e) # 将异常信息记录到日志 raise e else: result = 'PASS' my_log.info("断言结果--> {}, 测试通过".format(result)) finally: self.wb.write_data(row=self.row, column=8, msg=str(response)) # 只能写入str类型数据 self.wb.write_data(row=self.row, column=9, msg=result)