class LoginTest(unittest.TestCase): excel = do_excel.DoExcel(contants.api_case_file, 'login') cases = excel.get_case() # cases = do_excel.DoExcel(contants.api_case_file,'login').get_case() #读取文件 @classmethod #变为类方法,如果不变为类方法,每运行一个用来就会执行一次该操作 def setUpClass(cls): logger.info("准备测试前置") cls.http_request = HttpRequests2() # def setUp(self): # self.http_request = HttpRequests2() @data(*cases) #装饰测试方法,接收可迭代数据,cases为实例 def test_login(self, case): logger.info("开始测试:{}".format(case.title)) resp = self.http_request.request(case.method, case.url, case.data) try: self.assertEqual(case.expected, resp.text) self.excel.write_result(case.case_id + 1, resp.text, 'PASS') except AssertionError as e: self.excel.write_result(case.case_id + 1, resp.text, 'FAIL') logger.error("报错了:{0}".format(e)) raise e logger.info('测试结束:{0}'.format(case.title)) @classmethod #变为类方法 def tearDownClass(cls): logger.info("测试后置处理") cls.http_request.close()
class RechargeTest(unittest.TestCase): excel = do_excel.DoExcel(contants.api_case_file, 'pid') cases = excel.get_case() # cases = do_excel.DoExcel(contants.api_case_file,'recharge').get_case() #读取文件 @classmethod #变为类方法,如果不变为类方法,每运行一个用来就会执行一次该操作 def setUpClass(cls): cls.http_request = HttpRequests2() @data(*cases) #装饰测试方法,接收可迭代数据,cases为实例 def test_recharge(self, case): print(case.title) resp = self.http_request.request(case.method, case.url, case.data) actual_code = resp.json()['code'] print(actual_code) try: self.assertEqual(str(case.expected), actual_code) self.excel.write_result(case.case_id + 1, resp.text, 'PASS') except AssertionError as e: self.excel.write_result(case.case_id + 1, resp.text, 'FAIL') raise e @classmethod #变为类方法,如果不变为类方法,每运行一个用来就会执行一次该操作 def tearDownClass(cls): cls.http_request.close()
class AddTest(unittest.TestCase): excel = do_excel.DoExcel(contants.api_case_file, 'add') cases = excel.get_case() # cases = do_excel.DoExcel(contants.api_case_file,'login').get_case() #读取文件 @classmethod #变为类方法,如果不变为类方法,每运行一个用来就会执行一次该操作 def setUpClass(cls): cls.http_request = HttpRequests2() # def setUp(self): # self.http_request = HttpRequests2() @data(*cases) #装饰测试方法,接收可迭代数据,cases为实例 def test_add(self, case): # case.data = eval(case.data) #转换成字典 # print(type(case)) # if case.data.__contains__('mobilephone') and case.data['mobilephone'] == 'normal_user': #has_key判断键是否存在字典,存在返回Ture,否则返回false # case.data['mobilephone'] = config.get('data','normal_user') #那到配置文件里面的值赋值给mobilephone # # if case.data.__contains__('pwd') and case.data['pwd'] == 'normal_pwd': #has_key判断键是否存在字典,存在返回Ture,否则返回false # case.data['pwd'] = config.get('data','normal_pwd') #那到配置文件里面的值赋值给pwd # # if case.data.__contains__('memberId') and case.data['memberId'] == 'loan_member_id': #has_key判断键是否存在字典,存在返回Ture,否则返回false # case.data['memberId'] = config.get('data','loan_member_id') #那到配置文件里面的值赋值给mobilephone #在请求之前替换参数化的值 case.data = context.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_result(case.case_id + 1, resp.text, 'PASS') except AssertionError as e: self.excel.write_result(case.case_id + 1, resp.text, 'FAIL') raise e
class RegisterTest(unittest.TestCase): excel = do_excel.DoExcel(contants.api_case_file, 'register') cases = excel.get_case() # cases = do_excel.DoExcel(contants.api_case_file,'login').get_case() #读取文件 @classmethod #变为类方法,如果不变为类方法,每运行一个用来就会执行一次该操作 def setUpClass(cls): cls.http_request = HttpRequests2() # def setUp(self): # self.http_request = HttpRequests2() cls.mysql = do_mysql.DoMysql() @data(*cases) #装饰测试方法,接收可迭代数据,cases为实例 def test_register(self, case): if case.data.find("register_mobile") > -1: sql = 'select max(mobilephone) from future.member' #sql = 'select * from future.member where mobilephone = "15717481999"' #max_phone = self.mysql.fetch_one(sql)[0] #查询最大手机号码 ,fetchone返回值为元祖 phone = self.mysql.fetch_one(sql)[0] new_phone = int(phone) + 1 # if self.mysql.fetch_one(sql) != None: # phone = self.mysql.fetch_one(sql)[3] # # new_phone = int(phone) + 1 # # user = self.mysql.fetch_one('select * from future.member where mobilephone = "new_phone"') # print("请求user:"******"new_phone"') # #最大手机号码+1 # #max_phone = int(max_phone) + 1 # #new_phone = int(new_phone) + 1 # #print("最大手机号码:",max_phone) print("新手机号码:", new_phone) case.data = case.data.replace( 'register_mobile', str(new_phone)) #替换参数值,replace替换新的字符串,重新返回一个新的字符串 resp = self.http_request.request(case.method, case.url, case.data) try: self.assertEqual(case.expected, resp.text) self.excel.write_result(case.case_id + 1, resp.text, 'PASS') except AssertionError as e: self.excel.write_result(case.case_id + 1, resp.text, 'FAIL') raise e
class RechargeTest(unittest.TestCase): excel = do_excel.DoExcel(contants.api_case_file, 'recharge') cases = excel.get_case() # cases = do_excel.DoExcel(contants.api_case_file,'recharge').get_case() #读取文件 @classmethod #变为类方法,如果不变为类方法,每运行一个用来就会执行一次该操作 def setUpClass(cls): cls.http_request = HttpRequests2() cls.mysql = DoMysql() @data(*cases) #装饰测试方法,接收可迭代数据,cases为实例 def test_recharge(self, case): print(case.title) #请求之前,判断是否需要执行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_request.request(case.method, case.url, case.data) actual_code = resp.json()['code'] print(actual_code) try: self.assertEqual(str(case.expected), actual_code) self.excel.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 = int(eval(case.data)['amount']) # 充值金额 self.assertEqual(before + recharge_amount, after) except AssertionError as e: self.excel.write_result(case.case_id + 1, resp.text, 'FAIL') raise e
class InvestTest(unittest.TestCase): excel = do_excel.DoExcel(contants.api_case_file, 'invest') cases = excel.get_case() # cases = do_excel.DoExcel(contants.api_case_file,'login').get_case() #读取文件 @classmethod #变为类方法,如果不变为类方法,每运行一个用来就会执行一次该操作 def setUpClass(cls): cls.http_request = HttpRequests2() cls.mysql = do_mysql.DoMysql() # def setUp(self): # self.http_request = HttpRequests2() @data(*cases) #装饰测试方法,接收可迭代数据,cases为实例 def test_invest(self, case): print("开始执行测试:", case.title) #在请求之前替换参数化的值 case.data = context.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_result(case.case_id + 1, resp.text, 'PASS') #p判断加标成功后,查询数据库,取到loan_id if resp.json()['msg'] == '加标成功': sql = "select id from future.loan WHERE MemberID = 839 order by id desc limit 1" loan_id = self.mysql.fetch_one(sql)[0] print('标的ID:', loan_id) setattr(Context, "loan_id", str(loan_id)) #添加类属性 except AssertionError as e: self.excel.write_result(case.case_id + 1, resp.text, 'FAIL') raise e @classmethod #变为类方法 def tearDownClass(cls): cls.http_request.close()