class LoginTest(unittest.TestCase): do_excel = DoExcel(c02_contants.case_file) # 传入cases.xlsx cases = do_excel.read('login') request = Request() # 实例化对象 def setUp(self): pass @data(*cases) def test_login(self, case): logger.info('开始执行第{0}条用例'.format(case.case_id)) # 使用封装好的request 来完成请求 resp = self.request.request1(case.method, case.url, case.data) # request成为成员变量,用self调用 # 将返回结果和期望结果进行匹配 try: self.assertEqual(case.expected, resp.text, 'login error') # 一致就写入Excel的结果为PASS self.do_excel.write_back('login', case.case_id + 1, resp.text, 'PASS') # do_excel成为类变量,用self调用 logger.info('第{0}条用例执行结果:PASS'.format(case.case_id)) except AssertionError as e: self.do_excel.write_back('login', case.case_id + 1, resp.text, 'FAILED') logger.error('第{0}条用例执行结果:Failed'.format(case.case_id)) raise e def tearDown(self): pass
class TestRegister(unittest.TestCase): do_excel = DoExcel(c02_contants.case_file) register_test_data = do_excel.read('register') request = Request() def setUp(self): self.mysql = MysqlUtil(return_dict=True) # 创建数据连接 sql = "select max(mobilephone) as max_phone from future.member" # 查询最大手机号 self.max = self.mysql.fetch_one(sql)['max_phone'] # 值为元祖,根据下标取到电话号码 @data(*register_test_data) def test_register(self, case): #参数的处理 logger.info('开始执行第{0}条用例'.format(case.case_id)) data = case.data import json data = json.loads(data) # 返回一个字典 if data['mobilephone'] == '${register_mobile}': # 根据key,进行替换 data['mobilephone'] = int(self.max) + 1 # 使用封装好的request1来完成请求 resp = self.request.request1(case.method, case.url, data) # data 转换出来的字典传进去 try: self.assertEqual(case.expected, resp.text, 'register error') # 数据库查询数据校验 # 注册成功,手机号等于注册时的手机号data['mobilephone'] if resp.json()['msg'] == '注册成功': sql = 'select * from future.member where mobilephone = {0} '\ .format(data['mobilephone']) results = self.mysql.fetch_all(sql) # 1.首先判断是否有成功插入数据,判断列表的长度,注册成功就会有一条数据 self.assertEqual(1, len(results)) member = results[0] # 获取到这一条数据,是一个字典 # 2.判断注册成功余额应该是0 self.assertEqual(0, member['LeaveAmount']) # 3.判断会员的类型Type(0,1,2) # 4.判断昵称,传进来的名字或者是默认的昵称 self.do_excel.write_back('register', case.case_id + 1, resp.text, 'PASS') logger.info('第{0}条用例执行结果:PASS'.format(case.case_id)) except AssertionError as e: self.do_excel.write_back('register', case.case_id + 1, resp.text, 'FAILED') logger.error('第{0}条用例执行结果:Failed'.format(case.case_id)) raise e def tearDown(self): self.mysql.close()
class APITest(unittest.TestCase): do_excel = DoExcel(c02_contants.case_file) # 传入cases.xlsx login_cases = do_excel.read('login') register_cases = do_excel.read('register') request = Request() # 实例化对象 @unittest.skip("不要运行") @data(*login_cases) def test_login(self,case): print('开始执行第{0}条用例'.format(case.case_id)) # 使用封装好的request1 来完成请求 resp = self.request.request1(case.method,case.url,case.data) # 将返回结果和期望结果进行匹配 try: self.assertEqual(case.expected,resp.text,'login error') # 一致就写入Excel的结果为PASS self.do_excel.write_back('login',case.case_id+1,resp.text,'PASS') #类变量,用self调用 print('第{0}条用例执行结果:PASS'.format(case.case_id)) except AssertionError as e: self.do_excel.write_back('login',case.case_id+1,resp.text,'FAILED') print('第{0}条用例执行结果:Failed'.format(case.case_id)) raise e def setUp(self): mysql = MysqlUtil() # 创建数据连接 self.sql = "select max(mobilephone) from future.member" # 查询最大手机号 # 最大手机号为18999999999时,再加1成19000000000就不再是手机号码了,要删数据 self.max= mysql.fetch_one(self.sql)[0] # 值为元祖,根据下标取到电话号码 print(type(max)) @data(*register_cases) def test_register(self,case): print('开始执行第{0}条用例'.format(case.case_id)) import json data_dict = json.loads(case.data) if data_dict['mobilephone'] == '${register_mobile}': data_dict['mobilephone'] = int(self.max) + 1 # 使用封装好的request 来完成请求 resp = self.request.request1(case.method,case.url,data_dict) # 将返回结果和期望结果进行匹配 try: self.assertEqual(case.expected,resp.text,'register error') # 一致就写入Excel的结果为PASS self.do_excel.write_back('register',case.case_id+1,resp.text,'PASS') #类变量,用self调用 print('第{0}条用例执行结果:PASS'.format(case.case_id)) except AssertionError as e: self.do_excel.write_back('register',case.case_id+1,resp.text,'FAILED') print('第{0}条用例执行结果:Failed'.format(case.case_id)) raise e
sheet=self.workbook[sheet_name] sheet.cell(row,7).value=actual#写入实际结果到第7列单元格里面去 sheet.cell(row,8).value=result#写入执行结果到第8列单元格里面去 self.workbook.save(self.file_name)#要记得保存,同时要记得Excel要关闭状态 if __name__=='__main__': from common import c02_contants from common.c03_request import Request #test_data=DoExcel('..//datas//testcase.xlsx').read('login') do_excel=DoExcel(c02_contants.case_file) test_data=do_excel.read('login') print(test_data) # #Test_data=DoExcel('..//datas//testcase.xlsx').write_back('login',2,'hao','PASS') request=Request() # 实例化对象 for case in test_data: #参数的处理 #print(type(case.data),case.data) resp= request.request1(case.method,case.url,case.data) # print(resp.json()) # 把Excel表中的data数据转成字典 , # 在request模块里面在request1方法里面将字符串转化为字典,令每一个不同的case都直接已转换成字典 if resp.text==case.expected: do_excel.write_back('login',case.case_id+1,resp.text,'PASS') print("第{0}条用例执行结果:PASS".format(case.case_id)) else: do_excel.write_back('login',case.case_id+1,resp.text,'FAILED') print("第{0}条用例执行结果:Failed".format(case.case_id))
from common.c01_do_excel import DoExcel from common import c02_contants from common.c03_request import Request do_excel = DoExcel(c02_contants.case_file) test_data = do_excel.read('login') request = Request() # for case in test_data: #参数的处理 print('开始执行第{0}条用例'.format(case.case_id)) resp = request.request1(case.method, case.url, case.data) print('method', case.method) print('url', case.url) print('data', case.data) print(resp.json()) if resp.text == case.expected: do_excel.write_back('login', case.case_id + 1, resp.text, 'PASS') print('第{0}条用例执行结果:PASS'.format(case.case_id)) else: do_excel.write_back('login', case.case_id + 1, resp.text, 'FAILED') print('第{0}条用例执行结果:Failed'.format(case.case_id))
def setUpClass(cls): logger.debug('\n这是一个类方法') cls.request = Request() # cls.mysql = MysqlUtil()
def setUpClass(cls): # 继承unittest.TestCase里面的类方法,每个测试类里面去运行的操作,放到类方法里面 print('\n这是一个类方法') cls.request = Request() # 实例化一个Request类对象 # 类方法,只执行一次,整个类只执行一次