1.什么是setUp()
和tearDown()函數?
2.為什么我們要用setUp()
和tearDown()函數?
3.我們該怎樣用setUp()
和tearDown()?
1.什么是setUp()
和tearDown()函數?
♦ setUp()函數是在眾多函數或者說是在一個類類里面最先被調用的函數,而且每執行完一個函數都要從setUp()調用開始后再執行下一個函數,有幾個函數就調用他幾次,與位置無關,隨便放在那里都是他先被調用。
♦ tearDown()函數是在眾多函數執行完后他才被執行,意思就是不管這個類里面有多少函數,他總是最后一個被執行的,與位置無關,放在那里都行,最后不管測試函數是否執行成功都執行tearDown()
方法;如果setUp()
方法失敗,則認為這個測試項目失敗,不會執行測試函數也不執行tearDown()
方法。
2.為什么我們要用setUp()
和tearDown()函數?
♦ 我們利用這一特性在自動化中setup主要是進行測試前的初始化工作,比如在接口測試前面做一些前置的參數賦值,數據庫操作等等 teardown是測試后的清除工作,比如參數還原或銷毀,數據庫的還原恢復等
3.我們該怎樣用setUp()
和tearDown()?
from selenium import webdriver import unittest#第一步引入一個unittest
import time class Buy_Broject_Establish(unittest.TestCase):#第二步創建繼承一個unittest.TestCase的類
def setUp(self):#第三步定義一個setup,放一些准備的工作,或者准備一些測試數據。
self.driver = webdriver.Chrome() self.driver.maximize_window()#放大瀏覽器
self.driver.get("http://10.20.24.45:8080/amcs/login.htm") print(self.driver.title)#獲取標題頭並打印出來
print(self.driver.current_url)#獲取當前頁面的url
time.sleep(5) def test_001(self):#進入登錄頁面
self.driver.find_element_by_id('account_content').send_keys("admin")#輸入賬號
self.driver.find_element_by_id('account_pass').send_keys("1")#輸入密碼
self.driver.find_element_by_id('submitBtn').click()#點擊登錄
time.sleep(2) print(u'進入首頁') def test_002(self):#進入收購項目管理首頁
self.driver.find_element_by_xpath('//*[@id="J-h-menu-body"]/ul/li[3]/a').click()#進入項目管理
self.driver.find_element_by_xpath('//*[@id="J-h-menu-body"]/ul/li[3]/ul/li[1]/a/span').click()#進入收購項目管理
self.driver.implicitly_wait(5)#隱試等待
self.driver.switch_to.frame('mainFrame_assetPacketManagePro')#進入一個iframe。
time.sleep(10) print('進入收購項目管理') def tearDown(self):#第三步:定義一個tearDown,當我在測試完的時候我要對測試有一個銷毀的過程比如說關閉瀏覽器,那么我們就寫在tearDown當中
self.driver.quit() if __name__ == '__main__':#如果其他的類調用的這個類的時候他就會自動忽略掉這個函數,他是為了測試自身的類用的
unittest.main()#啟動程序
♦ 執行順序如下:setUp---test_001---setUp---test_002---tearDown