Python3+requests+unittest+log+excel+HTMLTestRunner+email框架接口自动化案例⑻——测试用例
一、测试用例
1.testcaseF1.py:对应API_TestCase.xlsx中的F1数据
# _*_ coding:utf-8 _*_ import unittest,paramunittest,json from Common import configHttp,readExcel,readConfig,getheader,log excel= readExcel.readExcel('API_TestCase.xlsx') #获取excel文件 names=excel.get_sheetnames() #获取sheel testcase=excel.get_xlsx(names[0]) #获取指定shell的case baseurl = readConfig.Read_Config().get_info('HTTP','baseurl') #获取配置文件的baseurl headers= getheader.host_headers() #获取heders log_info =log.logger #导入log系统 @paramunittest.parametrized(*testcase) class testUserLogin(unittest.TestCase): def setParameters(self,NO,case_name, method,path, data,code): """ 从 excel 中获取用例 :param NO: 用例序号 :param case_name: 用例名称 :param method: HTTP方法 :param path: 路径 :param data: 参数 :param code: 响应 """ self.case_name =NO self.case_name = str(case_name) self.method = str(method) self.path = baseurl+str(path) self.data = json.loads(data) #字符串转字典 self.code=code def setUp(self): #每个case执行前执行 log_info.info('---%s %s 测试开始---' % (names[0],self.case_name)) def testcaseF1(self): self._testMethodName = self.case_name #当前函数方法+测试用例测试函数名称 #self._testMethodDoc= self.case_name #测试函数文档 info=configHttp.req(self.method,self.path,params=self.data) #调用http请求方法 #print(info.json()) #打印请求结果 if self.case_name in ['获取设备任务信息']: self.assertEqual(info.status_code, self.code,('%s 断言失败' % self.case_name)) #断言 else: self.assertEqual(info.json()['code'], self.code,('%s 断言失败' % self.case_name)) #断言 def tearDown(self): #每个case执行后执行 log_info.info('---%s %s 测试结束---' % (names[0],self.case_name)) if __name__ == '__main__': suite = unittest.TestSuite() #创建测试套件对象 suite.addTest(unittest.makeSuite(testUserLogin)) #添加测试用例到套件中 runner = unittest.TextTestRunner() #使用TextTestRunner创建一个运行器 runner.run(suite) #执行用例
2.testcaseF2.py:对应API_TestCase.xlsx中的F2数据
# _*_ coding:utf-8 _*_ import unittest,paramunittest,json from Common import configHttp,readExcel,readConfig,getheader,log excel= readExcel.readExcel('API_TestCase.xlsx') #获取excel文件 names=excel.get_sheetnames() #获取sheel testcase=excel.get_xlsx(names[1]) #获取指定shell的case baseurl = readConfig.Read_Config().get_info('HTTP','baseurl') #获取配置文件的baseurl headers= getheader.host_headers() #获取heders log_info =log.logger #导入log系统 @paramunittest.parametrized(*testcase) class testUserLogin(unittest.TestCase): def setParameters(self,NO,case_name, method,path, data,code): """ 从 excel 中获取用例 :param NO: 用例序号 :param case_name: 用例名称 :param method: HTTP方法 :param path: 路径 :param data: 参数 :param code: 响应 """ self.case_name =NO self.case_name = str(case_name) self.method = str(method) self.path = baseurl+str(path) self.data = json.loads(data) self.code=int(code) #字符串转字典类型 def setUp(self): #每个case执行前执行 log_info.info('---%s %s 测试开始---' % (names[1],self.case_name)) def testcaseF2(self): self._testMethodName = self.case_name #当前函数方法+测试用例测试函数名称 #self._testMethodDoc= self.case_name #测试函数文档 info=configHttp.req(self.method,self.path,json=self.data)#调用http请求方法 #print(info.json()) if self.case_name in ['创建设备任务信息']: self.assertEqual(info.status_code, self.code,('%s 断言失败' % self.case_name))#断言 else: self.assertEqual(info.json()['code'], self.code,('%s 断言失败' % self.case_name))#断言 def tearDown(self): #每个case执行后执行 log_info.info('---%s %s 测试结束---' % (names[1],self.case_name)) if __name__ == '__main__': suite = unittest.TestSuite() #创建测试套件对象 suite.addTest(unittest.makeSuite(testUserLogin)) #添加测试用例到套件中 runner = unittest.TextTestRunner() #使用TextTestRunner创建一个运行器 runner.run(suite) #执行用例
3.testcaseF3.py:对应API_TestCase.xlsx中的F3数据
# _*_ coding:utf-8 _*_ import unittest,paramunittest,json from Common import configHttp,readExcel,readConfig,getheader,getrandom,log excel= readExcel.readExcel('API_TestCase.xlsx') #获取excel文件 names=excel.get_sheetnames() #获取sheel testcase=excel.get_xlsx(names[2]) #获取指定shell的case baseurl = readConfig.Read_Config().get_info('HTTP','baseurl') #获取配置文件的baseurl headers= getheader.host_headers() #获取heders log_info =log.logger #导入log系统 @paramunittest.parametrized(*testcase) class testUserLogin(unittest.TestCase): def setParameters(self,NO,case_name, method,path, data,code): """ 从 excel 中获取用例 :param NO: 用例序号 :param case_name: 用例名称 :param method: HTTP方法 :param path: 路径 :param data: 参数 :param code: 响应 """ self.case_name =NO self.case_name = str(case_name) self.method = str(method) self.path = baseurl+str(path) self.data = json.loads(data) self.code=int(code) #字符串转字典类型 def setUp(self): #每个case执行前执行 log_info.info('---%s %s 测试开始---' % (names[2],self.case_name)) def testcaseF3(self): self._testMethodName = self.case_name #当前函数方法+测试用例测试函数名称 #self._testMethodDoc= self.case_name #测试函数文档 if self.case_name in ['更新设备名称','deviceid不存在']: data = {} data['displayname'] = getrandom.randomstr() info = configHttp.req(self.method, self.path, json=data)#调用http请求方法 #print(info.json()) if self.case_name in ['更新设备名称']: self.assertEqual(info.status_code, self.code,('%s 断言失败' % self.case_name))#断言 else: self.assertEqual(info.json()['code'], self.code, ('%s 断言失败' % self.case_name))#断言 else: info = configHttp.req(self.method, self.path, json=self.data) #print(info.json()) self.assertEqual(info.json()['code'], self.code,('%s 断言失败' % self.case_name))#断言 def tearDown(self): #每个case执行后执行 log_info.info('---%s %s 测试结束---' % (names[2],self.case_name)) if __name__ == '__main__': suite = unittest.TestSuite() #创建测试套件对象 suite.addTest(unittest.makeSuite(testUserLogin)) #添加测试用例到套件中 runner = unittest.TextTestRunner() #使用TextTestRunner创建一个运行器 runner.run(suite) #执行用例
4.testcaseF4.py:对应API_TestCase.xlsx中的F4数据
# _*_ coding:utf-8 _*_ import unittest,paramunittest,json,time from Common import configHttp,readExcel,readConfig,getheader,log excel= readExcel.readExcel('API_TestCase.xlsx') #获取excel文件 names=excel.get_sheetnames() #获取sheel testcase=excel.get_xlsx(names[3]) #获取指定shell的case baseurl = readConfig.Read_Config().get_info('HTTP','baseurl') #获取配置文件的baseurl headers= getheader.host_headers() #获取heders log_info =log.logger #导入log系统 @paramunittest.parametrized(*testcase) class testUserLogin(unittest.TestCase): def setParameters(self,NO,case_name, method,path, data,code): """ 从 excel 中获取用例 :param NO: 用例序号 :param case_name: 用例名称 :param method: HTTP方法 :param path: 路径 :param data: 参数 :param code: 响应 """ self.case_name =NO self.case_name = str(case_name) self.method = str(method) self.path = baseurl+str(path) self.data = json.loads(data) self.code=int(code) #字符串转字典类型 def setUp(self): #每个case执行前执行 log_info.info('---%s %s 测试开始---' % (names[3],self.case_name)) def testcaseF4(self): self._testMethodName = self.case_name #当前函数方法+测试用例测试函数名称 #self._testMethodDoc= self.case_name #测试函数文档 if self.case_name in ['删除设备任务信息']: create = excel.get_xlsx(names[1])[0] info_jobid = configHttp.req(create['method'],baseurl + create['path'],json=json.loads(create['data']))#调用http请求方法 time.sleep(5) info = configHttp.req(self.method, self.path, json=info_jobid.json())#调用http请求方法 #print(info.json()) self.assertEqual(info.status_code, self.code,('%s 断言失败' % self.case_name))#断言 else: info = configHttp.req(self.method, self.path, json=self.data) #print(info.json()) self.assertEqual(info.json()['code'], self.code,('%s 断言失败' % self.case_name))#断言 def tearDown(self): #每个case执行后执行 log_info.info('---%s %s 测试结束---' % (names[3],self.case_name)) if __name__ == '__main__': suite = unittest.TestSuite() #创建测试套件对象 suite.addTest(unittest.makeSuite(testUserLogin)) #添加测试用例到套件中 runner = unittest.TextTestRunner() #使用TextTestRunner创建一个运行器 runner.run(suite) #执行用例
—————————————————————————————— 选择正确的事、再把事做正确
——————————————————————————————