フレームワーク構築(4):UnitTestテストフレームワークに基づいて、テスト用例を作成する
4763 ワード
次に、テスト例を正式に作成します.まず、UnitTestテスト例に基づく構造を見てみましょう.
分析:
Webテストを実行するときは、ブラウザを使用してurlを開く必要があります.ログインする必要がある場合は、対応するロールのユーザーにログインしてから、正常にテストを開始する必要があります.したがって、setUpセクションでは、ブラウザを開き、指定したurlを開き、ユーザー名のパスワードをログインする必要があります.一方、tearDownセクションでは、ブラウザを閉じる操作が一般的です.
では、前節で書いたロゴに基づいてpage.py setupを書きます.pyは、urlを開くとログイン操作がsetupに統合されます.pyで.
これでsetupをpyのloginメソッドはテスト例に適用されます.次に、クリックメニュー(テスト管理-)を書いてテストレポートを参照し、対応するページのテスト例を開く必要があるとします.まず、srcpagesmenuを作成します.pyを使用して、すべてのページ要素とページ操作を定義します.
次に、テスト例/src/test_を作成します.case/test_viewpage.py
試験用例を作成した後、上記のコードに示すようにunittestを通過する試験用例の実行を開始する.main()で現在のテストケースを起動し、直接F 5でテストケースを実行すればよい
import unittest
class TestViewPage(unittest.TestCase):
def setUp(self):
#
def test_xx(self):
#
def tearDown(self):
# ,
分析:
Webテストを実行するときは、ブラウザを使用してurlを開く必要があります.ログインする必要がある場合は、対応するロールのユーザーにログインしてから、正常にテストを開始する必要があります.したがって、setUpセクションでは、ブラウザを開き、指定したurlを開き、ユーザー名のパスワードをログインする必要があります.一方、tearDownセクションでは、ブラウザを閉じる操作が一般的です.
では、前節で書いたロゴに基づいてpage.py setupを書きます.pyは、urlを開くとログイン操作がsetupに統合されます.pyで.
//src/common/setup.py
from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC
import sys
sys.path.append("../..")
from src.pages.login_page import LoginPage
from config.globalparameter import web_url
from time import sleep
def login(username, password):
driver = webdriver.Firefox()
url = web_url
login_page = LoginPage(driver, url)
try:
login_page.open_page()
except:
raise e
if EC.title_contains("Sign in")(driver):
print "Now start to login the web."
login_page.input_username(username)
login_page.input_password(password)
login_page.click_login()
ret = login_page.check_username_shown_correct(username)
if ret == True:
log.info("Login successfully!")
else:
raise Exception("Failed to login.")
return driver
if __name__ == '__main__':
driver = login("username_wang", "passwd_wang")
# open the url defined in config/globalparameter.py and use the given username and passwd to login
これでsetupをpyのloginメソッドはテスト例に適用されます.次に、クリックメニュー(テスト管理-)を書いてテストレポートを参照し、対応するページのテスト例を開く必要があるとします.まず、srcpagesmenuを作成します.pyを使用して、すべてのページ要素とページ操作を定義します.
//src/pages/menu.py
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support import expected_conditions as EC
import sys
sys.path.append("../..")
from src.common.BasePage import BasePage
class Menu(BasePage):
#locator
# The first level menu TestManagement
menu_Test_Management_loc = (By.XPATH, '/html/body/div[1]/div/div[2]/ul/li[1]/a')
# The second level menu View Report
menu_View_Report_loc = (By.LINK_TEXT, 'View Report')
# The ul tag is used to confirm if the report tree is loaded
ul_report_tree_loc = (By.XPATH, '//ul[@id="report_tree"]')
# The header text is used to confirm if the report tree is loaded correctly
header_test_report_loc = (By.XPATH, '/html/body/div[2]/div[1]/div[1]')
def __init__(self, selenium_driver):
self.driver = selenium_driver
def move_on_menu_Test_Management(self):
'''
move the mouse on menu
'''
element = self.find_element(*self.menu_Test_Management_loc)
ActionChains(self.driver).move_to_element(element).perform()
def click_menu_View_Report(self):
self.find_element(*self.menu_View_Report_loc).click()
def check_report_page_loaded(self, text):
"""
check if the View Report page is loaded.
if the given text is included in the given area, return True, otherwise return False
"""
self.find_element(*self.ul_report_tree_loc)
return self.check_page_loaded_correct(text, *self.header_test_report_loc)
次に、テスト例/src/test_を作成します.case/test_viewpage.py
//src/test_case/test_viewpage.py
import unittest
from selenium import webdriver
import sys
sys.path.append("../..")
from src.pages.menu import Menu
from src.common.setup import login
from time import sleep
class TestViewPage(unittest.TestCase):
def setUp(self):
self.driver = login("username","passwd")
def test_viewpage_report(self):
'''View Page test: View Report'''
self.menu = Menu(self.driver)
menu = self.menu
menu.move_on_menu_Test_Management()
Print "Click Menu: View Report."
menu.click_menu_View_Report()
print "Check if the test report page is loaded correctly."
ret = menu.check_report_page_loaded("Test Report")
self.assertTrue(ret, msg="Failed to load TestReport page")
def tearDown(self):
self.driver.close()
if __name__ == '__main__':
unittest.main()
試験用例を作成した後、上記のコードに示すようにunittestを通過する試験用例の実行を開始する.main()で現在のテストケースを起動し、直接F 5でテストケースを実行すればよい
if __name__ == '__main__':
unittest.main()