class LoginTest(unittest.TestCase): excel = excel_practice(contants.case_file, "recharge") cases = excel.read_excel() @classmethod#变成类方法,使全部用例执行完之后才生效 def setUpClass(cls): cls.http_request = Http_Request2() cls.mysql = DoMysql() @data(*cases) def test_recharge(self,case): #判断请求之前,是否需要执行sql if case.sql is not None: sql = eval(case.sql)['sql1'] member = self.mysql.fetch_one(sql) print('before',type(member['LeaveAmount']),member['LeaveAmount']) before = member['LeaveAmount'] case.data = context.replace(case.data) # 使用封装好的正则表达式替换数据 resp = self.http_request.request(case.method,case.url,case.data) actual_code = resp.json()["code"] #actual_code = int(actual_code),或者把actual转成整数也可以 print(case.title) try: self.assertEqual(str(case.expected),actual_code) self.excel.write_excel(case.case_id + 1, actual_code, "PASS") #成功之后,再次判断是否需要执行sql if case.sql is not None: sql = eval(case.sql)['sql1'] member = self.mysql.fetch_one(sql) print('after',type(member['LeaveAmount']),member['LeaveAmount']) after = member['LeaveAmount'] self.assertEqual(before+int(eval(case.data)['amount']),after) except AssertionError as e: self.excel.write_excel(case.case_id + 1, actual_code, "FAIL") raise e
class LoginTest(unittest.TestCase): excel = excel_practice(contants.case_file, "login") cases = excel.read_excel() @classmethod #变成类方法,使全部用例执行完之后才生效 def setUpClass(cls): logger.info('测试前置') cls.http_request = Http_Request2() @data(*cases) def test_login(self, case): logger.info('开始测试:{0}'.format(case.title)) case.data = context.replace(case.data) # 使用封装好的正则表达式替换数据 resp = self.http_request.request(case.method, case.url, case.data) try: self.assertEqual(case.expected, resp.text) 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") logger.error('报错:{}'.format(e)) raise e logger.info('结束测试:{0}'.format(case.title)) @classmethod def tearDownClass(cls): logger.info('测试后置') cls.http_request.close()
class LoginTest(unittest.TestCase): excel = excel_practice(contants.case_file, "withdraw") cases = excel.read_excel() @classmethod #变成类方法,使全部用例执行完之后才生效 def setUpClass(cls): cls.http_request = Http_Request2() @data(*cases) def test_withdraw(self, case): case.data = context.replace(case.data) # 使用封装好的正则表达式替换数据 resp = self.http_request.request(case.method, case.url, case.data) actual_code = resp.json()["code"] #actual_code = int(actual_code),或者把actual转成整数也可以 try: self.assertEqual(str(case.expected), actual_code) self.excel.write_excel(case.case_id + 1, actual_code, "PASS") print("成功案例:", case.title) except AssertionError as e: self.excel.write_excel(case.case_id + 1, actual_code, "FAIL") print("失败案例:", case.title) raise e
class LoginTest(unittest.TestCase): excel = excel_practice(contants.case_file, "register") cases = excel.read_excel() @classmethod #变成类方法,使全部用例执行完之后才生效 def setUpClass(cls): cls.http_request = Http_Request2() cls.mysql = do_mysql.DoMysql() @data(*cases) def test_login(self, case): if case.data.find('register_mobilephone'): if case.sql is not None: sql = eval(case.sql)['sql1'] # sql = 'select max(mobilephone) from future.member' min_phone = self.mysql.fetch_one(sql)[ 'max(mobilephone)'] # 查询最小手机号码 # print(self.mysql.fetch_one(sql)['max(mobilephone)']) min_phone = int(min_phone) + 1 min_phone = str(min_phone) print('min_phone', min_phone) case.data = case.data.replace('register_mobilephone', str(min_phone))
class InvestTest(unittest.TestCase): excel = excel_practice(contants.case_file, "invest") cases = excel.read_excel() @classmethod#变成类方法,使全部用例执行完之后才生效 def setUpClass(cls): cls.http_request = Http_Request2() cls.mysql = do_mysql.DoMysql() @data(*cases) def test_invest(self,case): if case.sql is not None: sql = eval(case.sql)['sql1'] print('before_LeaveAmount',self.mysql.fetch_one(sql)['LeaveAmount']) # print('before_LeaveAmount', self.mysql.fetch_one(sql)) before_LeaveAmount = self.mysql.fetch_one(sql)['LeaveAmount'] case.data = context.replace(case.data) # 使用封装好的正则表达式替换数据 resp = self.http_request.request(case.method,case.url,case.data) # print(resp.json()) actual_code = resp.json()["code"] # print(resp.json()) #actual_code = int(actual_code),或者把actual转成整数也可以 try: self.assertEqual(str(case.expected),actual_code) self.excel.write_excel(case.case_id+1,actual_code,"PASS") print("成功案例:", case.title) if case.sql is not None: sql = eval(case.sql)['sql1'] after_LeaveAmount = self.mysql.fetch_one(sql)['LeaveAmount'] print('after_LeaveAmount',after_LeaveAmount) self.assertEqual(before_LeaveAmount - int(eval(case.data)['amount']), after_LeaveAmount) #判断加标成功后,查询数据库,得到loan_id if resp.json()['msg'] == '加标成功': sql = 'select id from future.loan where MemberID = 375 ORDER BY CreateTime DESC LIMIT 1;' loan_id = str(self.mysql.fetch_one(sql)['id']) setattr(Context,'loan_id',str(loan_id))