def tearDownClass(cls): logger.get_logger(__name__).info('准备测试后置') cls.http_test.close() cls.mysql.close() print("用例执行完毕") # def tearDown(self): # self.mysql.close()
class LoginTest(unittest.TestCase): logger = logger.get_logger(__name__) @classmethod def setUpClass(cls): logger.get_logger(__name__).info('准备测试前置') cls.http_test = http_request.HTTPRequest2() cls.mysql = do_mysql.DoMysql() # def setUp(self): # self.mysql = do_mysql.DoMysql() #读取测试用例 do_Myexcel = DoExcel(contants.case_file, 'login') cases = do_Myexcel.get_cases() @data(*cases) #装饰方法 def test_login(self, case): # 在请求之前替换参数化的值 case.data = context.replace(case.data) print(case.data) self.logger.info('开始测试:{0}'.format(case.title)) resp = self.http_test.request(case.method, case.url, case.data) #actual_code=resp.json()['code'] try: #self.assertEqual(str(case.expected),actual_code) self.assertEqual(case.expected, resp.text) self.do_Myexcel.write_result(case.case_id + 1, resp.text, 'PASS') except AssertionError as e: self.do_Myexcel.write_result(case.case_id + 1, resp.text, 'FAIL') self.logger.error('报错了,{0}'.format(e)) raise e self.logger.info('结束测试:{0}'.format(resp.text))
class HTTPRequest2: """ 使用这类的request方法去完成不同的HTTP请求,并且返回响应结果 """ # 生成Log文件 logger = logger.get_logger(__name__) def __init__(self): #打开一个session self.session = requests.sessions.session() def request(self, method, url, data=None, json=None): if type(data) == str: data = eval(data) #拼接url url = config.ReadConfig().get('api', 'pre_url') + url self.logger.debug('请求url:{0}'.format(url)) self.logger.debug('请求data:{0}'.format(data)) if method.upper() == 'GET': resp = self.session.request(method=method, url=url, params=data) elif method.upper() == 'POST': if json: resp = self.session.request(method=method, url=url, json=data) else: resp = self.session.request(method=method, url=url, data=data) else: resp = None self.logger.error('UN-support method') self.logger.debug('请求response:{0}'.format(resp.text)) return resp def close(self): self.session.close()
class LoginTest(unittest.TestCase): logger = logger.get_logger(__name__) @classmethod def setUpClass(cls): logger.get_logger(__name__).info('准备测试前置') cls.http_test = http_request.HTTPRequest2() cls.mysql = do_mysql.DoMysql() #读取测试用例 do_Myexcel = DoExcel(contants.case_file, 'recharge') cases = do_Myexcel.get_cases() @data(*cases) #装饰方法 def test_recharge(self, case): self.logger.info('开始测试:{0}'.format(case.title)) # 在请求之前替换参数化的值 case.data = context.replace(case.data) print(case.data) #请求之前,判断是否需要执行SQL if case.sql is not None: sql = eval(case.sql)['sql1'] member = self.mysql.fetch_one(sql) print(member['leaveamount']) before = member['leaveamount'] resp = self.http_test.request(case.method, case.url, case.data) #print(resp.text) actual_code = resp.json()['code'] try: self.assertEqual(str(case.expected), actual_code) #self.assertEqual(case.expected, resp.text) self.do_Myexcel.write_result(case.case_id + 1, resp.text, 'PASS') #成功之后,判断是否需要执行SQL 数据库校验,判断是否充值成功 if case.sql is not None: sql = eval(case.sql)['sql1'] member = self.mysql.fetch_one(sql) print(member['leaveamount']) after = member['leaveamount'] recharge_amount = eval(case.data)['amount'] #充值金额 print(type(recharge_amount)) self.assertEqual(before + recharge_amount, after) except AssertionError as e: self.do_Myexcel.write_result(case.case_id + 1, resp.text, 'FAIL') self.logger.error('报错了!{0}'.format(e)) raise e self.logger.info('结束测试:{0}'.format(resp.text))
class RegisterTest(unittest.TestCase): logger = logger.get_logger(__name__) @classmethod def setUpClass(cls): cls.http_test = http_request.HTTPRequest2() cls.mysql = do_mysql.DoMysql() logger.get_logger(__name__).info('准备测试前置') #读取测试用例 do_Myexcel = DoExcel(contants.case_file, 'register') cases = do_Myexcel.get_cases() @data(*cases) #装饰方法 def test_register(self, case): #print(case.data.find('register_mobile')) self.logger.info('开始测试:{0}'.format(case.title)) i = random.randint(20, 100) if case.data.find('register_mobile') > -1: sql = 'select max(mobilephone) from future.member' max_phone = self.mysql.fetch_one(sql)[ 'max(mobilephone)'] #查询最大手机号码 #最大手机号码-i max_phone = int(max_phone) - i print(max_phone) #replace方法是转换之后重新返回一个新的字符串 case.data = case.data.replace('register_mobile', str(max_phone)) resp = self.http_test.request(case.method, case.url, case.data) #print(resp.text) #actual_code=resp.json()['code'] try: #self.assertEqual(str(case.expected),actual_code) self.assertEqual(case.expected, resp.text) self.do_Myexcel.write_result(case.case_id + 1, resp.text, 'PASS') #数据库校验,查询数据库是否存在刚注册手机号 if resp.json()['msg'] == '注册成功': sql = 'SELECT * FROM future.member WHERE mobilephone=' + str( max_phone) member_id = self.mysql.fetch_one(sql)['mobilephone'] print(member_id) self.assertEqual(member_id, str(max_phone)) except AssertionError as e: self.do_Myexcel.write_result(case.case_id + 1, resp.text, 'FAIL') self.logger.info('报错了,{0}'.format(e)) raise e self.logger.info('结束测试:{0}'.format(resp.text))
class bidLoanTest(unittest.TestCase): logger=logger.get_logger(__name__) @classmethod def setUpClass(cls): logger.get_logger(__name__).info('准备测试前置') cls.http_test=http_request.HTTPRequest2() cls.mysql = do_mysql.DoMysql() # def setUp(self): # self.mysql = do_mysql.DoMysql() #读取测试用例 do_Myexcel = DoExcel(contants.case_file, 'add') cases = do_Myexcel.get_cases() @data(*cases)#装饰方法 def test_add(self,case): #case.data=eval(case.data) # if case.data.__contains__('mobilephone') and case.data['mobilephone']=='normal_user': # case.data['mobilephone']=config.ReadConfig().get('data','normal_user') # if case.data.__contains__('pwd') and case.data['pwd']=='normal_pwd': # case.data['pwd']=config.ReadConfig().get('data','normal_pwd') self.logger.info('开始测试:{0}'.format(case.title)) #在请求之前替换参数化的值 case.data=context.replace(case.data) #print(case.data) resp=self.http_test.request(case.method,case.url,case.data) #print(resp.text) #actual_code=resp.json()['code'] try: #self.assertEqual(str(case.expected),actual_code) self.assertEqual(case.expected, resp.text) self.do_Myexcel.write_result(case.case_id+1,resp.text,'PASS') except AssertionError as e: self.do_Myexcel.write_result(case.case_id+1,resp.text,'FAIL') self.logger.error('报错了,{0}'.format(e)) raise e self.logger.info('结束测试:{0}'.format(resp.text)) @classmethod #所有的用例执行完之后才会执行此类方法 def tearDownClass(cls): logger.get_logger(__name__).info('准备测试后置') cls.http_test.close() cls.mysql.close() print("用例执行完毕") # def tearDown(self): # self.mysql.close()
class investTest(unittest.TestCase): logger = logger.get_logger(__name__) @classmethod def setUpClass(cls): logger.get_logger(__name__).info('准备测试前置') cls.http_test = http_request.HTTPRequest2() cls.mysql = do_mysql.DoMysql() #读取测试用例 do_Myexcel = DoExcel(contants.case_file, 'invest') cases = do_Myexcel.get_cases() @data(*cases) # 装饰方法 def test_invest(self, case): self.logger.info('开始测试:{0}'.format(case.title)) # 在请求之前替换参数化的值 case.data = context.replace(case.data) resp = self.http_test.request(case.method, case.url, case.data) actual_code = resp.json()['code'] try: self.assertEqual(str(case.expected), actual_code) #self.assertEqual(case.expected, resp.text) self.do_Myexcel.write_result(case.case_id + 1, resp.text, 'PASS') #判断加标成功之后,查询数据库,取到Loan_id if resp.json()['msg'] == '加标成功': sql = 'SELECT id FROM future.loan WHERE memberid=1008 ORDER BY id DESC LIMIT 1' loan_id = self.mysql.fetch_one(sql)['id'] print('标的ID', loan_id) #保存到类属性里面 setattr(Context, 'loan_id', str(loan_id)) except AssertionError as e: self.do_Myexcel.write_result(case.case_id + 1, resp.text, 'FAIL') self.logger.error('报错了,{0}'.format(e)) raise e self.logger.info('结束测试:{0}'.format(resp.text)) @classmethod # 所有的用例执行完之后才会执行此类方法 def tearDownClass(cls): logger.get_logger(__name__).info('准备测试后置') cls.http_test.close() cls.mysql.close() print("用例执行完毕")
def setUpClass(cls): logger.get_logger(__name__).info('准备测试前置') cls.http_test = http_request.HTTPRequest2() cls.mysql = do_mysql.DoMysql()