Python+Selenium+Unittest實現PO模式web自動化框架(6)


1.TestCases目錄下的模塊

TestCases目錄下是存放測試用例的目錄。

 

 TestCases目錄下的測試用例采用unittest框架來構建。

例如:登錄功能的測試用例。(test_1_login.py)

# --^_^-- coding:utf-8 --^_^--
# @Remark:測試登錄功能

import unittest
from selenium import webdriver
from PageObjects.login.login_page import LoginPage
from PageObjects.home.home_page import HomePage
from TestDatas import login_datas as ld
from TestDatas import Comm_Datas as cd
from Common import logger
import logging
import ddt
import time


@ddt.ddt
class TestLogin(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        # 前置:打開瀏覽器,登錄網頁
        cls.driver = webdriver.Chrome()
        cls.driver.maximize_window()
        cls.driver.get(cd.web_login_url)
        cls.lp = LoginPage(cls.driver)

    # 刷新一下當前頁面
    def tearDown(self):
        self.driver.refresh()

    # 正常用例
    def test_login_2_success(self):
        logging.info("*********登錄用例:正常場景-登錄成功*********")
        # 步驟:登錄頁面-登錄操作
        self.lp.login(ld.success_data["user"], ld.success_data["pwd"])
        time.sleep(3)
        # 斷言:首頁-【今日事務】這個元素存在
        self.assertTrue(HomePage(self.driver).check_login_ele_exists())

    # 異常用例
    @ddt.data(*ld.wrong_datas)
    def test_login_1_error(self, data):
        time.sleep(2)
        logging.info("*********登錄用例:異常場景-登錄失敗*********")
        self.lp.login(data["user"], data["pwd"])
        time.sleep(2)
        # 斷言:判斷提示信息是否一致
        self.assertEqual(data["check"],LoginPage(self.driver).get_errorMsg())

    @classmethod
    def tearDownClass(cls):
        # 后置:關閉瀏覽器
        cls.driver.quit()

登錄的用例函數,只需要調用在PageObjects目錄下登錄頁面的登錄功能即可,而不需要再次編寫元素定位和元素操作。

登錄的用例分成登錄成功和登錄失敗的用例,登錄失敗有(用戶名錯誤,密碼錯誤)等情況,但是參數就只有用戶名和密碼,只不過值發生變化,所以可以用ddt模塊來做參數化,這樣就不需要寫多條登錄失敗的測試用例。

 


免責聲明!

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



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