更多技術文章
unittest 是python 的單元測試架構, unittest 單元測試提供了建立測試用例,測試套件以及批量執行的方案。作為單元測試的架構, unittest 也是可以對程式最小子產品的一種靈活化的測試。
unittest 和 Junit 都是單元測試?差別在于: unittest 是基于功能測試的單元測試,是基于 UI 界面的功能性測試,而 Junit 是白盒單元測試架構。
解決了單個腳本重複的操作(導包,擷取浏覽器驅動,關閉浏覽器)。
1、測試固件
1.1 setUp()
在執行測試用例腳本之前進行初始化環境的方法。
1.2 tearDown()
測試用例執行後,進行清理環境工作。
2、unittest 基本使用
測試用例的命名: test_ 。
from selenium import webdriver
import time
import unittest
class TestUnit1(unittest.TestCase):
# 擷取浏覽器的驅動
def setUp(self):
# 1、self 就是類的引用/執行個體
# 2、全局變量的定義:self.變量名
self.driver = webdriver.Chrome()
self.driver.maximize_window()
self.url = "https://www.baidu.com/"
self.driver.get(self.url)
time.sleep(3)
# 在百度中搜尋資訊
# 測試用例的命名: test_
def test_search1(self):
self.driver.find_element_by_id("kw").send_keys("顧一野")
self.driver.find_element_by_id("su").click()
time.sleep(6)
def test_search2(self):
self.driver.find_element_by_id("kw").send_keys("account")
self.driver.find_element_by_id("su").click()
time.sleep(6)
# 關閉浏覽器
def tearDowm(self):
self.driver.quit()
# 一個入口
if __name__ == "__main__":
unittest.main()
3、測試套件(suit)
把不同檔案下的測試用例組織起來形成的測試用例組。
把需要一次性執行的測試用例,放在一個套件中,就可以一次性運作。
import unittest
from Test import testbaidu1
from Test import testbaidu2
def creatSuit():
# 1、要把不同測試腳本的類中的需要執行的方法放在一個測試套件中
# suit = unittest.TestSuite()
# suit.addTest(testbaidu1.Baidu1("test_hao"))
# suit.addTest(testbaidu2.Baidu2("test_hao"))
# suit.addTest(testbaidu2.Baidu2("test_baidusearch"))
# return suit
# 2、如果需要把一個測試腳本中所有的測試用例都添加到suit中,怎麼做?
# 第一種※:makeSuit
# suit = unittest.TestSuite()
# suit.addTest(unittest.makeSuite(testbaidu1.Baidu1))
# suit.addTest(unittest.makeSuite(testbaidu2.Baidu2))
# return suit
# 第二種:TestLoader
# suit1 = unittest.TestLoader().loadTestsFromTestCase(testbaidu1.Baidu1)
# suit2 = unittest.TestLoader().loadTestsFromTestCase(testbaidu2.Baidu2)
# suit = unittest.TestSuite([suit1, suit2])
# return suit
# 3、可以把一個檔案夾下面所有的測試腳本中的測試用例放入測試套件
discover = unittest.defaultTestLoader.discover("../Test", pattern="testbaidu*.py", top_level_dir=None)
return discover
if __name__ == "__main__":
suit = creatSuit()
# verbersity= 0 測試用例成功多少,失敗多少, 1 會标注哪個成功/失敗, 2 會标注
runner = unittest.TextTestRunner()
runner.run(suit)
更多技術文章