在使用Python+selenium搭建自動化測試架構時,發現有個問題,就是每個testcase執行都是在登入的前提下才能運作的,根據網上介紹的各種方法,發現用setUpClass或者用setUpModule均不能解決這個問題。因為我的testcase是不在一個檔案下的,我可能寫在不同的檔案中。是以要實作這個在登入後運作各個testcase,就必須将登入操作設定為公共子產品,這樣每個testcase都可以去調用這個子產品。
登入操作代碼
from pageobjects.login_page import LoginPage
import time
class TestLogin():
#因為登入操作是每個測試用例都要先執行的操作,是以将登入操作寫成一個公共子產品,每個測試用例都可以調用,可實作在每個testcase中先執行登入操作
def login(self,driver):
#登入操作
time.sleep(3)
loginpage=LoginPage(driver)
loginpage.type_name("admin")
loginpage.type_pw("123456")
loginpage.type_code(1111)
loginpage.click_login_btn()
loginpage.get_windows_img()
time.sleep(5)
return driver
在testcase中調用登入子產品
import unittest
from framework.browser_Engine import BrowserEngine
from pageobjects.index_page import IndexPage
from testsuits.test_login import TestLogin
from pageobjects.account_list_page import AccountListPage
class TestAccountList(unittest.TestCase):
@classmethod
def setUpClass(cls):
browse=BrowserEngine(cls)
cls.driver=browse.open_browser(cls)
@classmethod
def tearDownClass(cls):
cls.driver.quit()
def test_account_list(self):
driver=self.driver
TestLogin().login(driver) #調用登入子產品
indexpage=IndexPage(driver)
#驗證系統首頁是否有顯示
element=indexpage.findelement("xpath=>/html/body/div/div[1]/ul/li[1]/a")
try:
assert "系統首頁" == element.text
print("Test success")
except Exception:
print("Failed")
#indexpage.click_acc_mag() #點選賬号管理
#indexpage.get_windows_img()