一、什麼是unittest?
- unittest 是python中自帶的一個單元測試架構,可以整合Selenium ,Requests,來實作UI和接口自動化測試。
二、uniitest 中常用的類
- TestCase:測試用例,一個testcase的執行個體就是一個測試用例,通過內建unittest.TestCase,來實作用例的繼承,在測試用例中,所有的方法都要以test 開頭來定義。
- TestSuite: 測試套件,是用來放測試用例的,使用的方法就是addTest()。
- TestLoader:是用來加載TestCase到TestSuite中的,使用的方法就是loadTestsFromModule()加載一個測試用例子產品,loadTestsFromTestCase()加載一個測試用例類。
- TextTestRunner:用來執行測試用例,運作測試套件。
- fixture:測試用例環境的搭建和銷毀,測試前準備環境的搭建(setUp),執行測試代碼(run),以及測試後的環境還原(tearDown)。
三、小列子
1.建立一個測試用例類
# 第一步導入 unittest
import unittest
from unittest_01.login import login_check
# 第二步建立一個類繼承unittest.TsetCase類
class Login(unittest.TestCase):
def test_login_check(self):
# 第一步傳參
data = ("admin", "123456")
# 第二步設定預期結果
expected = {"code": 1, "msg": "登入成功"}
# 第三步調用登入校驗的函數
result = login_check(*data)
# 第四步斷言一下預期結果和實際結果
self.assertEquals(expected, result)
def test_login_username(self):
data = (None, "123456")
expected = {"code": 3, "msg": "使用者名或密碼不能為空"}
result = login_check(*data)
self.assertEquals(expected, result)
def test_login_password(self):
data = ("admin", None)
expected = {"code": 2, "msg": "使用者名或密碼不能為空"}
result = login_check(*data)
self.assertEquals(expected, result)
def test_login_username_cw(self):
data = ("admins", "123456")
expected = {"code": 2, "msg": "使用者名或密碼錯誤"}
result = login_check(*data)
self.assertEquals(expected, result)
# 解決啟動的時間隻能運作一個方法
if __name__ == '__main__':
unittest.main()
2.建立一個測試用例啟動類
'''
檔案的啟動子產品
'''
# 導入unittest
import unittest
from unittest_01 import case_test
# 第一步建立一個測試套件(指定一個子產品測試)
# suite = unittest.TestSuite()
# # 第二步建立一個加載對象
# loader = unittest.TestLoader()
#
# # 第三步将測試用例子產品加載到測試套件裡面
# suite.addTest(loader.loadTestsFromModule(case_test))
#
# # 第四步建立一個測試運作檔案啟動器
# runtest = unittest.TextTestRunner()
# runtest.run(suite)
# 第二種 指定類測試
suite = unittest.TestSuite()
loader = unittest.TestLoader()
suite.addTest(loader.loadTestsFromTestCase(case_test.Login))
runtest = unittest.TextTestRunner()
runtest.run(suite)
# 第三種 指定方法名測試
# casetest = case_test.Login("test_login_check")
# runtest = unittest.TextTestRunner()
# runtest.run(casetest)
'''
....
----------------------------------------------------------------------
Ran 4 tests in 0.001s
OK
'''
# 運作了4個方法,全部OK
四、使用HTMLTestRunnerNew生成測試報告
1.下載下傳HTMLTestRunnerNew.py
連結:https://pan.baidu.com/s/10BK1rIXZI8waesPG6jFrHA
提取碼:xx6g
2.引入HTMLTestRunnerNew.py到項目目錄中
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIyVGduV2YfNWawNyZuBnL0gzM0ATO1YTM4IDOwAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
3.導入HTMLTestRunnerNew.py
# 導入unittest
import unittest
from unittest_01 import case_test
# 導入HTMLTestRunnerNew
import HTMLTestRunnerNew
# 第一步建立一個測試套件
suite = unittest.TestSuite()
# 第二步建立一個加載對象
loader = unittest.TestLoader()
# 第三步将測試用例子產品加載到測試套件裡面
suite.addTest(loader.loadTestsFromModule(case_test))
test01 = HTMLTestRunnerNew.HTMLTestRunner(stream=open("result01.html", "wb"),
tester="小丸子",
description="測試報告",
title="标題")
test01.run(suite)
4.運作後目錄裡面會多出一個result01.html,通路如下