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()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM