天天看點

unittest測試架構

作者:測試者穆勒

更多技術文章

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)

更多技術文章

繼續閱讀