Python unittest環境搭建和基礎使用

2021-09-23 13:16:52 字數 3345 閱讀 9683

用python搭建自動化測試框架,需要組織用例以及測試執行,大部分推薦的是unittest。現在搭建python介面框架用的也是這個,隨著了解,也有其他的框架,有時間再多去學習,保持持續學習哦~希望對大家有幫助

unittest是python自帶的單元測試框,可以用來作自動化測試框架的用例組織執行框架。

優點:提供用例組織與執行方法;提供比較方法;提供豐富的日誌、清晰的報告

流程:寫好testcase

由testloader載入testcase到testsuite

然後由texttestrunner來執行testsuite,執行的結果儲存在texttestresult中。

通過命令列或者unittest.main()執行時,main會呼叫texttestrunner中的run()來執行,或者可以直接通過texttestrunner來執行用例。

在runner執行時,預設將執行結果輸出到控制台,我們可以設定其輸出到檔案,在檔案中檢視結果

unittest中最核心的部分是:testfixture、testcase、testsuite、testrunner

1、test fixture

測試用例每次執行之前需要準備測試環境,每次測試完成後還原測試環境,例如連線資料庫,開啟瀏覽器動作執行完後需要還原關閉

setup():準備環境,執行每個測試用例的前置條件;

teardown():環境還原,執行每個測試用例的後置條件;

setupclass():必須使用@classmethod裝飾器,所有case執行的前置條件,只執行一次;

teardownclass():必須使用@classmethod裝飾器,所有case執行完後只執行一次;

例如:# 重寫testcase的setup() teardown()方法:在每個測試方法執行前以及執行後各執行一次

def setup(self):    

print("開始")

def teardown(self):

print("結束")

2、testcase

類,unittest.testcase

乙個類class繼承 unittest.testcase,就是乙個測試用例。乙個testcase的例項就是乙個測試用例,就是乙個完整的測試流程。

包括測試前環境準備setup()|setupclass()、執行**run()、測試環境後的還原teardown()|teardownclass()。

繼承自unittest.testcase的類中,測試方法的名稱要以test開頭。且只會執行以test開頭定義的方法(測試用例)

例如:import unittest

class mytestcase(unittest.testcase):

# 繼承自unittest.testcase

# 重寫testcase的setup()、teardown()方法:在每個測試方法執行前以及執行後各執行一次

def setup(self):

print("開始")

def test_something(self):

self.assertequal(true, false)

def teardown(self):

print("結束")

# 如果想在所有case執行之前準備一次測試環境,並在所有case執行結束後再清理環境

#classmethod是用來指定乙個類的方法為類方法,沒有此引數指定的類的方法為例項方法

# @classmethod

# def setupclass(cls):

#     print("開始")

# @classmethod

# def teardownclass(cls):

#     print("結束")

if __name__ == '__main__':

# 在main()中加verbosity引數,可以控制輸出的錯誤報告的詳細程度

# verbosity=*:預設是1;設為0,則不輸出每乙個用例的執行結果;2-輸出詳細的執行結果

unittest.main(verbosity=2)

3、testsuite

把多個測試用例集合起來,一起執行,就需要testsuite。testsuite還可以包含testsuite

一般通過addtest()或者addtests()向suite中新增。case的執行順序與新增到suite中的順序是一致的

例如:if __name__ == '__main__':

# unittest.main() #使用main()直接執行時,將按case的名稱順序執行

suite = unittest.testsuite()

suite.addtest(mytestcase('test_01'))  # 將需要執行的case新增到test suite中,沒有新增的不會被執行

suite.addtest(mytestcase('test_02'))

suite.addtest(mytestcase('test_03'))

unittest.texttestrunner().run(suite)  # 將根據case新增的先後順序執行

4、testrunner

e:\python高階\inte***ceapi (htmltest.py)  

import htmltestrunner

import unittest

from demo import testdemo

import os

#獲取路徑

abspath = os.path.abspath(os.path.realpath(os.path.dirname(__file__)))

if __name__ == '__main__':

suite = unittest.testsuite()

suite.addtest(testdemo.mytestcase("test_one"))

suite.addtest(testdemo.mytestcase("test_something"))

#如果沒指定路徑需要建立路徑

path=abspath

if not os.path.exists(path):

os.makedirs(path)

else:

pass

report_path = "report.html"

report_title = u"測試報告"

desc = u"介面自動化測試報告詳情"

fp = open(report_path, 'wb')

runner = htmltestrunner.htmltestrunner(fp, title=report_title, description=desc)

runner.run(suite)

python unittest基礎用法

unittest 執行例項 基礎用法 import unittest 匯入unittest模組 defcalc a,b 被測的方法 return a b class testcale unittest.testcase 必須要整合unittest的testcase方法 deftest1 self r...

Python unittest學習筆記

python標準庫中的模組unittest提供了 測試工具。單元測試用於核實函式的某個方面沒問題 測試用例是一組單元測試,這些單元測試一起核實函式在各種情形下的行為都符合要求。良好的測試用例考慮到了函式可能收到的各種輸入,包含針對所有這些情形的測試。全覆蓋式測試用例包含一整套單元測試,涵蓋了各種可能...

python unittest 之mock學習筆記

mock的詳細用法 英文介紹 本文先對函式的mock方法進行演示。假設有檔案fun1和fun2,fun2中的函式呼叫了fun1中的函式。利用mock方法生成fun1中函式的乙個fake返回值,在此基礎上,對fun2中的函式進行單元測試。如下 fun1檔案 usr bin env python cod...