class AddTest(unittest.TestCase): excel = do_excel.Do_Excel(contants.case_file, 'add') cases = excel.get_cases() ##实例化对象 列表里面放case实例 @classmethod ##类方法,每一个类只执行一次 def setUpClass(cls): cls.http_request = HTTPRequest2() ##实例化 @data(*cases) def test_longin(self, case): ###对象迭代里面的属性值 case.data = eval(case.data) ##变成一个字段 print(type(case.data), case.data) if case.data.__contains__( 'mobilephone') and case.data['mobilephone'] == 'normal_user': case.data['mobilephone'] = config.get('data', 'normal_user') ##拿到 值赋值给data
def replace(data): p = "#(.*?)#" while re.search(p, data): print(data) m = re.search(p, data) g = m.group(1) try: v = config.get('data', g) except configparser.NoOptionError as e: ##如果配置文件里面没有,去context里面去取 if hasattr(Context, g): v = getattr(Context, g) else: print("找不到参数化的值") raise e print(v) data = re.sub(p, v, data, count=1) ##替换 print(data) return data
def request(self, method, url, data=None, json=None): method = method.upper() if type(data) == str: data = eval(data) #拼接URL url = config.get('api', 'pre_url') + url if method == 'GET': resp = self.session.request(method=method, url=url, params=data) elif method == 'POST': if json: #if json is not None: resp = self.session.request(method=method, url=url, json=json) else: resp = self.session.request(method=method, url=url, data=data) else: resp = None print("输入的请求方法不支持") # print("请求地址",resp.url) # print("请求数据",resp.json()) print("请求response:", resp.text) return resp
def request(self, method, url, data=None, json=None, cookies=None): if type(data) == str: data = eval(data) ##拼接请求的url url = config.get('api', 'pre_url') + url method = method.upper() ##将method强制转为大写 logger.debug("请求地址:{0}".format(url)) logger.debug("请求数据:{0}".format(data)) if method == 'GET': resp = requests.get(url, params=data, cookies=cookies) #url,params elif method == 'POST': if json is not None: #if json: resp = requests.post(url, json=json, cookies=cookies) else: resp = requests.post(url, data=data, cookies=cookies) else: resp = None logger.error("输入的请求方法不支持") #print("输入的请求方法不支持") logger.debug("请求的响应{0}".format(resp.textSSSSS)) return resp
cases = excel.get_cases() ##实例化对象 列表里面放case实例 @classmethod ##类方法,每一个类只执行一次 def setUpClass(cls): cls.http_request = HTTPRequest2() ##实例化 @data(*cases) def test_longin(self, case): ###对象迭代里面的属性值 case.data = eval(case.data) ##变成一个字段 print(type(case.data), case.data) if case.data.__contains__( 'mobilephone') and case.data['mobilephone'] == 'normal_user': case.data['mobilephone'] = config.get('data', 'normal_user') ##拿到 值赋值给data if case.data.__contains__('pwd') and case.data['pwd'] == 'normal_pwd': case.data['pwd'] = config.get('data', 'normal_pwd') ##拿到 值赋值给data if case.data.__contains__( 'member_id') and case.data['member_id'] == 'loan_member_id': case.data['member_id'] = config.get( 'data', 'loan_member_id') ##拿到 值赋值给data # case.data=contants.replace(case.data) resp = self.http_request.request(case.method, case.url, case.data) try: self.assertEqual(str(case.expected), resp.json()['code']) self.excel.Write_excel(case.case_id + 1, resp.text, 'PASS') except AssertionError as e: self.excel.Write_excel(case.case_id + 1, resp.text, 'FAIL') raise e @classmethod def tearDownClass(cls):
###解析正则表达式---查找替换 import re from InterfaceTest.common.config import config data = '{"mobilephone":"#normal_user#","pwd":"#normal_pwd#"}' # 原本字符,元字符 # p = "#(.*?)#" # 正则表达式 # p='normal_user' # p='#(.*?)#'###(开始结束)#()# (里面的返回,括号代表组的开始于结束) # m=re.search(p,data)##从任意位置开始找,找到一个就返回,这样就找不到所有的 # print(type(m),m.group(1))##返回 #开始,#结束 p='#.*#' # print(m.group())#返回表达式和组里面的内容 # print(m.group(1))#返回指定组的内 group第一个组里面的内容 # g=m.group(1) # v=config.get('data',g)##拿到参数化的key,根据key取配置文件的值 # print(v) # ms=re.findall(p,data)###获取全部返回列表 # data=re.sub(p,v,data,count=1)###查找替换 # # 如果要匹配多次,替换多次,使用循环来解决 p = "#(.*?)#" # 正则表达式 while re.search(p, data): print(data) m = re.search(p, data) # 从任意位置开始找,找第一个就返回Match object, 如果没有找None g = m.group(1) # 拿到参数化的KEY v = config.get('data', g) # 根据KEY取配置文件里面的值 print(v) # 记得替换后的内容,继续用data接收 data = re.sub(p, v, data, count=1) # 查找替换,count查找替换的次数 print('最后替换后的data', data)