unittest詳解(一) unittest框架


unittest 介紹了4 個重要的概念: test case, test suite, test runner,test fixture。

    1、testcase: 一個TestCase 的實例就是一個測試用例, 就是一個完整的測試流程,包括測試前准備環境的搭建(setUp),實現測試過程的代碼(run),以及測試后環境的還原(tearDown)。元測試(unittest)的本質也就在這里,一個測試用例是一個完整的測試單元,通過運行這個測試單元,可以對某一個功能進行驗證。

  setUp 用於設置初始化工作,在每一個測試用例前先被執行,它與tearDown方法相呼應,后者在每一個測試用例執行后被執行。這里的初始化工作定義了瀏覽器啟動和基礎URL 地址。

    def setUp(self):
        self.driver = webdriver.Chrome()
        self.driver.implicitly_wait(30)
        self.base_url = "https://172.1.1.1/"
        self.verificationErrors = []
        self.accept_next_alert = True

  tearDown 方法在每個測試方法執行后調用,這個方法用於完成測試用例執行后的清理工作,如退出瀏覽器、關閉驅動,恢復用例執行狀態等。在setUp()方法中定義了verificationErrors 為空數組,這里通過assertEqual()比較其是否為空,如果為空說明用例執行的過程過程中沒有出現異常,否則將拋出AssertionError 異常:

    def tearDown(self):
        self.driver.quit()
        self.assertEqual([], self.verificationErrors)

  2、testsuite: 對一個功能的驗證往往是需要多測試用例的,可以把多的測試用例集合在一起執行,這就產生了測試套件TestSuite 的概念,它用來組裝單個測試用例,而且TestSuite 也可以嵌套TestSuite。

testSuite()可以被看作一個容器(測試套件),通過addTest 方法我們可羅列具體所要執行的測試用例。如果使用unittest.main() 的話默認會執行所有以test 開頭的測試用例。

  3、testrunner: TextTestRunner 是來執行測試用例的,其中的run(test)用來執行TestSuite/TestCase。測試的結果會保存到TextTestResult 實例中,包括運行了多少測試用例,成功了多少,失敗了多少等信息。

  4、testfixture: 對一個測試用例環境的搭建和銷毀,是一個fixture,通過覆蓋TestCase 的setUp()和tearDown()方法來實現. 

  了解unittest框架之后,練習一個登錄的例子,代碼如下:

# coding=utf-8
from selenium import webdriver
import unittest

class task_a(unittest.TestCase):
    def setUp(self): #每個測試用例之前執行
        self.driver=webdriver.Chrome()
        self.url="https://172.1.1.1"
        self.verificationErrors=[]
        self.accept_next_alter=True
    def tearDown(self):  #每個測試用例之后執行
        self.driver.quit()
        self.assertEqual([],self.verificationErrors)
    def test_1(self):
        u"測試用例1"
        driver=self.driver
        driver.get(self.url)
        driver.maximize_window()
        username='user1'
        driver.find_element_by_css_selector("input.login-form").send_keys(username) #定位到用戶名輸入框
        driver.find_element_by_css_selector("input.passwd").send_keys('123456') #定位到密碼輸入框
        driver.find_element_by_css_selector("input.btn.btn-default").click()  #點擊登錄按鈕
        info = driver.find_element_by_css_selector("#userMenu > div.user-id").text
        self.assertEqual(username, info)
        print("login用例執行完成")
if __name__=='__main__':
    unittest.main()

 

 


免責聲明!

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



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