1. 程式人生 > 實用技巧 >Python3+Selenium Web自動化測試案例分享⑹——unittest組織測試用例

Python3+Selenium Web自動化測試案例分享⑹——unittest組織測試用例

本章節主要講解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()