- 斷言方法
- unittest整體結構
- 舉個栗子(百度搜索頁測試用例)
一、斷言方法
方法 | 檢查 |
---|---|
assertEqual(a,b) | a == b |
assertNotEqual(a,b) | a != b |
assertTrue(x) | bool(x) is True |
assertFalse(x) | bool(x) is False |
assertIs(a,b) | a is b |
assertIsNot | a is not b |
assertIsNone(x) | x is None |
assertIsNotNone(x) | x is not None |
assertIn(a,b) | a in b |
assertNotIn(a,b) | a not in b |
assertIsInstance(a,b) | isinstance(a,b) |
assertNotIsInstance(a,b) | not isinstance(a,b) |
二、unittest整體結構
Test Case
一個TestCase的實例就是一個測試用例。什麼是測試用例?就是一個完整的測試流程,包括測試前準備環境的搭建、實現測試過程的代碼,以及測試後環境的還原。單元測試的本質,一個測試用例就是一個完整的測試單元,通過運行這個測試單元,可以對某一功能進行驗證。
Test Suite
一個功能的驗證往往需要多個測試用例,可以把多個測試用例集合在一起來執行,這就產生了測試套件TestSuite的概念。Test Suite用來組裝單個測試用例。可以通過addTest加載TestCase到TestSuite中,從而返回一個TestSuite實例。
Test Runner
測試的執行也是單元測試中非常重要的一個概念,一般單元測試框架中都會提供豐富的執行策略和執行結果。在unittest單元測試框架中,通過TextTestRunner類提供的run()方法來執行test suite/test case。test runner可以使用圖形界面、文本界面,或返回一個特殊的值等方式來表示測試執行的結果。
Test Fixture
對一個測試用例環境的搭建和銷燬,就是一個fixture,通過覆蓋TestCase和setUp()和tearDown()方法來實現。比如說在這個測試用例中需要訪問數據庫,那麼可以在setUp()中通過建立數據庫連接來進行初始化,在tearDown()中清除數據庫產生的數據,然後關閉連接等。
三、舉個栗子
from selenium import webdriver
import unittest
import time
class MyTest(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Chrome()
self.driver.maximize_window()
self.driver.implicitly_wait(10)
self.base_url = 'http://www.baidu.com'
def test_baidu(self):
driver = self.driver
driver.get(self.base_url + '/')
driver.find_element_by_id("kw").clear()
driver.find_element_by_id("kw").send_keys("unittest")
driver.find_element_by_id("su").click()
time.sleep(2)
title = driver.title
self.assertEqual(title,"unittest_百度搜索")
def tearDown(self):
self.driver.quit()
if __name__ == '__main__':
unittest.main()
warning :未經授權,不得轉載
有問題的小夥伴請在下方留言,喜歡就點個贊吧;關注我,帶你一起寫bug
知乎:叄貳壹
簡書:帶只拖鞋去流浪