本章節主要講解excel測試用例(UI_TestCase.xlsx)、unittest組織登錄測試用例,其中需要用到讀取UI_TestCase.xlsx測試數據、paramunittest(參數化)、調用loginPage類、斷言等方法。
詳細如下:
一、UI_TestCase.xlsx
二、test_login.py
# _*_ coding:utf-8 _*_ from selenium import webdriver #導入瀏覽器模塊 from Page.loginPage import Login_page #導入登錄對象類 from Public import log,readConfig,readExcel #導入封裝的Log方法、GetPath方法 import unittest,time,paramunittest excel= readExcel.readExcel('UI_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 log_info =log.logger #log方法 @paramunittest.parametrized(*testcase) class TestLogin(unittest.TestCase): """ 網易企業郵箱登錄測試 """ def setParameters(self,NO,case_name,path,username,password,result): """ 從 excel 中獲取用例 :param NO: 用例編號 :param case_name: 用例名稱 :param username: 賬號 :param password: 密碼 :param result: 預期結果 """ self.no =NO self.case_name = str(case_name) self.path = baseurl+str(path) self.username = username self.password = password self.result=result @classmethod def setUpClass(self): """執行類之前運行一次""" self.driver = webdriver.Chrome() #啟動瀏覽器 self.login_page = Login_page(self.driver) #初始化loginPage對象 @classmethod def tearDownClass(self): """執行完類后執行一次""" time.sleep(3) #等待時間 self.driver.close() #關閉瀏覽器窗口 def setUp(self): """執行每個測試用例前執行一次""" self.login_page.open(self.path, '網易企業郵箱 - 登錄入口') #打開首頁,並斷言title是否正確 log_info.info('---%s %s測試用例 測試開始---' % (names[0], self.case_name)) def tearDown(self): """執行完每個測試用例后執行一次""" log_info.info('---%s %s測試用例 測試結束---' % (names[0], self.case_name)) #@unittest.skip("無條件跳過該測試") def test_login(self): """登錄成功測試""" #self._testMethodName = self.case_name #當前函數方法+測試用例測試函數名稱 self._testMethodDoc = self.case_name # 測試函數文檔 self.login_page.click_loginway() self.login_page.input_username(self.username) #輸入用戶名 self.login_page.input_password(self.password) #輸入密碼 self.login_page.click_login() #點擊登錄按鈕 if self.case_name in ['登錄成功']: try: self.assertEqual(self.result, self.login_page.show_userid(), msg='斷言失敗') # 斷言 self.login_page.click_exit() # 點擊退出按鈕 log_info.info('***斷言成功***') except Exception as e: log_info.info('***斷言失敗***') self.login_page.get_windows_img() raise e elif self.case_name in ['登錄失敗-賬號為空']: try: self.assertEqual(self.result, self.login_page.username_air(), msg='斷言失敗') # 斷言 log_info.info('***斷言成功***') except Exception as e: log_info.info('***斷言失敗***') self.login_page.get_windows_img() raise e elif self.case_name in ['登錄失敗-密碼為空']: try: self.assertEqual(self.result, self.login_page.password_air(), msg='斷言失敗') # 斷言 log_info.info('***斷言成功***') except Exception as e: log_info.info('***斷言失敗***') self.login_page.get_windows_img() raise e else: try: self.assertEqual(self.result, self.login_page.Mismatch(), msg='斷言失敗') # 斷言 log_info.info('***斷言成功***') except Exception as e: log_info.info('***斷言失敗***') self.login_page.get_windows_img() raise e if __name__ == '__main__': unittest.main()