unittest對單個測試類的多種測試執行方法總結


  基於unittest測試框架編寫的測試腳本,一般單個測試類下會有多個測試方法,unittest也提供多種測試執行方式,下面就不同方式或者需求一一實操並說明:

一、使用unittest下main()方法的運行所有測試方法,實例代碼如下:

'''單個測試類的多種運行方式'''
# -*- coding:utf-8 -*-
import unittest
from selenium import webdriver
from time import sleep
import HTMLTestRunner

class BaiduSearch(unittest.TestCase):
    @classmethod   
    def setUpClass(cls):
        #create a new browser session
        cls.driver = webdriver.Chrome()
        cls.driver.implicitly_wait(30)
        cls.driver.maximize_window()

        cls.driver.get("https://www.baidu.com")

    def test_search_selenium(self):
        #get the search textbox and enter search keyword
        search_textbox = self.driver.find_element_by_id('kw')
        search_textbox.clear()
        search_textbox.send_keys("selenium")
        #get the and seacrh button and click
        seacrh_button = self.driver.find_element_by_id('su')
        seacrh_button.click()
        
        #add assert
        sleep(2)
        tag = self.driver.find_element_by_link_text("Selenium Remote Control").text
        self.assertIn("Selenium",tag)

    def test_search_python(self):
        search_textbox = self.driver.find_element_by_id('kw')
        search_textbox.clear()
        search_textbox.send_keys("python")
        seacrh_button = self.driver.find_element_by_id('su')
        seacrh_button.click()

        sleep(3)
        tag = self.driver.find_element_by_link_text("PyPI").text
        self.assertEqual("PyPI",tag)

    @classmethod
    def tearDownClass(cls):
        #close the browser window
        cls.driver.quit()

#使用unittest下main()方法的運行所有測試方法
if __name__ == '__main__':
    unittest.main(verbosity=2)  #傳遞verbosity參數查看更詳細的測試結果展示

  運行結果如下 :

  

二、使用TestLoader和TextTestRunner來創建和運行測試套件,代碼如下:

...
suite = unittest.TestLoader().loadTestsFromTestCase(BaiduSearch)     
unittest.TextTestRunner(verbosity=2).run(suite)

  運行結果同上。

三、使用TestSuite和TextTestRunner來創建和運行測試套件,代碼如下:

...
suite = unittest.TestSuite()
suite.addTest(BaiduSearch("test_search_python"))   #使用addTest()添加測試類下面的單個測試方法
suite.addTest(BaiduSearch("test_search_selenium"))
unittest.TextTestRunner(verbosity=2).run(suite)

  運行結果同上。

  注意這個方法可以靈活只運行測試類下的任何一個或者幾個測試方法,只需要addTest相應測試方法即可,或者在添加完所有方法后注釋掉其中不打算測試的方法也可以。

四、使用HTMLTestRunner和TestLoader來創建和運行測試套件並生成漂亮的HTML格式的測試報告,代碼如下:

...
suite = unittest.TestLoader().loadTestsFromTestCase(BaiduSearch)
#open the report file
report_file = open('./' + ' BaiduSearch_test.html', 'wb')
#configure HTMLTestRunner options and run the suite
HTMLTestRunner.HTMLTestRunner(stream = report_file,
                              title = "baidu",
                              description = "Baidu Test",
                              verbosity=2).run(suite)

  運行結果同上且生成一個HTML格式的測試報告在當前目錄下。

  

 


免責聲明!

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



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