基於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格式的測試報告在當前目錄下。