1. 程式人生 > >unittest詳解(五) 引入裝飾器@classmethod

unittest詳解(五) 引入裝飾器@classmethod

ase 以及 testcase word ram lte 重新 username program

我們知道setUp()和setDown()的作用是在每條測試用例執行前準備測試環境以及用例測試結束後恢復測試環境,如果我們執行的測試類下所有測試用例的環境準備和環境復原的操作都是一樣的,那麽我們就沒必要每條測試用例執行前都執行一次setUp()和setDown()的操作。在運行測試類前只執行一次環境的準備,測試類運行結束後只執行一次環境復原的操作,這時我們就可以引入裝飾器@classmethod

代碼:

# coding = utf-8
import unittest
import warnings
from selenium import webdriver
from time import
sleep # 驅動文件路徑 driverfile_path = rD:\coship\Test_Framework\drivers\IEDriverServer.exe class CmsLoginTest(unittest.TestCase): @classmethod def setUpClass(cls): print("test start!") # 這行代碼的作用是忽略一些告警打印 warnings.simplefilter("ignore", ResourceWarning) cls.driver
= webdriver.Ie(executable_path=driverfile_path) cls.driver.get("http://172.21.13.83:28080/") @classmethod def tearDownClass(cls): cls.driver.quit() print("test end!") def test_login1(self): ‘‘‘用戶名、密碼為空‘‘‘ self.driver.find_element_by_css_selector("[name=‘admin.loginName‘]
").clear() self.driver.find_element_by_css_selector("[name=‘admin.password‘]").clear() self.driver.find_element_by_css_selector("#imageField").click() error_message1 = self.driver.find_element_by_css_selector("[for=‘loginName‘]").text error_message2 = self.driver.find_element_by_css_selector("[for=‘textfield‘]").text self.assertEqual(error_message1, 用戶名不能為空) self.assertEqual(error_message2, 密碼不能為空) def test_login2(self): ‘‘‘用戶名正確,密碼錯誤‘‘‘ self.driver.find_element_by_css_selector("[name=‘admin.loginName‘]").clear() self.driver.find_element_by_css_selector("[name=‘admin.password‘]").clear() self.driver.find_element_by_css_selector("[name=‘admin.loginName‘]").send_keys("autotest") self.driver.find_element_by_css_selector("[name=‘admin.password‘]").send_keys("123456") self.driver.find_element_by_css_selector("#imageField").click() error_message = self.driver.find_element_by_css_selector(".errorMessage").text self.assertEqual(error_message, 密碼錯誤,請重新輸入!) def test_login3(self): ‘‘‘用戶名不存在‘‘‘ self.driver.find_element_by_css_selector("[name=‘admin.loginName‘]").clear() self.driver.find_element_by_css_selector("[name=‘admin.password‘]").clear() self.driver.find_element_by_css_selector("[name=‘admin.loginName‘]").send_keys("test007") self.driver.find_element_by_css_selector("[name=‘admin.password‘]").send_keys("123456") self.driver.find_element_by_css_selector("#imageField").click() error_message = self.driver.find_element_by_css_selector(".errorMessage").text self.assertEqual(error_message, 用戶不存在!) def test_login4(self): ‘‘‘用戶名、密碼正確‘‘‘ self.driver.find_element_by_css_selector("[name=‘admin.loginName‘]").clear() self.driver.find_element_by_css_selector("[name=‘admin.password‘]").clear() self.driver.find_element_by_css_selector("[name=‘admin.loginName‘]").send_keys("autotest") self.driver.find_element_by_css_selector("[name=‘admin.password‘]").send_keys("111111") self.driver.find_element_by_css_selector("#imageField").click() sleep(1) self.driver.switch_to.frame("topFrame") username = self.driver.find_element_by_css_selector("#nav_top>ul>li>a").text self.assertEqual(username,"autotest") if __name__ == "__main__": unittest.main(verbosity=2)

執行結果:

"C:\Program Files\Python36\python.exe" D:/Git/Test_Framework/test_case/test_cmslogin.py
test start!
test_login1 (__main__.CmsLoginTest)
用戶名、密碼為空 ... ok
test_login2 (__main__.CmsLoginTest)
用戶名正確,密碼錯誤 ... ok
test_login3 (__main__.CmsLoginTest)
用戶名不存在 ... ok
test_login4 (__main__.CmsLoginTest)
用戶名、密碼正確 ... ok
test end!

----------------------------------------------------------------------
Ran 4 tests in 22.462s

OK

Process finished with exit code 0

從執行結果中可以看到,整個測試類的運行過程中,只執行了一次setUpClass()和tearDownClass()

unittest詳解(五) 引入裝飾器@classmethod