Python3+requests+unittest+log+excel+HTMLTestRunner+email框架介面自動化案例⑺——測試用例
阿新 • • 發佈:2020-07-17
一、測試用例
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) #執行用例