1. 程式人生 > 其它 >pytest入門與基礎用法

pytest入門與基礎用法

官方文件:https://docs.pytest.org/en/stable/getting-started.html

簡介:

pytest是python的一個單元測試框架,類似python自帶的unittest測試框架,但是比unittest框架使用起來更簡潔,效率更高。 特點:
  • 命令列工具,容易上手,入門簡單,編寫用例簡單,可讀性強
  • 可以直接採用assert進行斷言,不需要記憶self.assertEqual()等
  • 支援引數化(pytest.mark.parametrize)
  • 易於持續整合,適用於介面自動和UI自動化
  • 擴充套件性強,支援擴充套件第三方外掛
  • 執行測試過程中可以將某些測試跳過(skip),或者對某些預期失敗的case標記成失敗(xfail)
  • 支援重複執行(rerun)失敗的case
  • 可以執行nose, unittest編寫的測試case
  • 可生成html報告(pytest-html或allure)
  • 可支援執行部分用例(marker)

安裝:

#前提:已安裝pip,可通過以下命令判斷是否安裝
pip --version
#安裝
pip install -U pytest
#檢視pytest版本
pip show pytest

基礎用法:

1、用例設計規則:

測試檔案的檔名必須以"test_"開頭,或者以"_test"結尾 測試類命名必須以"Test"開頭 測試函式名必須以"test"開頭 測試類裡面不能使用"__init__"方法

2、斷言方法:

基本的assert 簡單示例:

3、pytest執行規則:

1、直接pytest,查詢當前目錄及其子目錄下所有符合規則的檔案,類,方法,函式並全部執行; 2、pytest 檔名.py,單獨執行某個python檔案 3、pytest 檔名.py::類名,單獨執行某個檔案中的某個類 4、pytest 檔名.py::類名::方法名,單獨執行類中的某個方法 注意: pytest用例執行是亂序的,如需指定用例的順序,可使用pytest-ordering外掛,在測試用例的方法前加上裝飾器@pytest.mark.run(order=[num]),將按照num 值的大小順序從小到大來執行

4、執行引數:

可使用pytest --help檢視幫助文件

個人常用到的引數:

5、引數化:

使用@pytest.mark.parametrize() 進行引數化

6、框架結構:

在pytest中,可與unittest一樣,在執行用例前後執行 setup,teardown 來增加用例的前置和後置條件 pytest的setup,teardown按照用例執行級別可分為以下幾類:
模組級(setup_module/teardown_module)在模組始末呼叫
函式級(setup_function/teardown_function)在函式始末呼叫(在類外部)
類級(setup_class/teardown_class)在類始末呼叫(在類中)
方法級(setup_method/teardown_methond)在方法始末呼叫(在類中)
方法級(setup/teardown)在方法始末呼叫(在類中)

7、fixture:

(1)fixture作為函式引數: 例如測試用例1需要登入,測試用例2不需要,測試用例3需要,則可用fixture作為函式引數來控制: (2)fixture指定範圍共享: 除了用setup,teardown控制用例的前置後置外,還可用fixture功能自定義用例的前置後置
根據作用範圍大小劃分:session> module> class> function,具體作用範圍如下:
function 函式或者方法級別都會被呼叫
class 類級別呼叫一次
module 模組級別呼叫一次,即一個檔案呼叫一次
session 是多個檔案呼叫一次(可以跨.py檔案呼叫,每個.py檔案就是module)
使用方法: fixture函式前增加@pytest.fixture(scope="module") 測試用例前增加@pytest.mark.usefixtures("fixture函式名") 注意: 1、fixture函式可以放在單獨的測試檔案裡,不與測試用例同一個檔案 2、如果希望多個測試檔案共享fixture,可以放在某個公共目錄下新建一個conftest檔案,將fixture放在裡面 3、測試用例函式的引數列表包含fixture函式名字,pytest就可以檢測到了,檢測順序:優先搜尋該測試用例所在的檔案,然後搜尋conftest.py,並在測試函式執行之前執行該fixture函式。 注:fixture功能是pytest的特色功能,功能極為強大,具體使用可檢視官方文件。