天天看點

unittest簡單使用

一、什麼是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到項目目錄中

unittest簡單使用

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,通路如下

unittest簡單使用