pytest 是一個成熟的全功能Python測驗工具,可以幫助您撰寫更好的程式,它與 python 自帶的 unittest 測驗框架類似,但 pytest 使用起來更簡潔和高效,并且兼容 unittest 框架,
pytest 能夠支持簡單的單元測驗和復雜的功能測驗,pytest 本身支持單元測驗,可以結合 requests 實作介面測驗,結合selenium、appium 實作自動化功能測驗,使用 pytest 結合 allure 集成到 Jenkins 中可以實作持續集成,
作業中一般會使用持續集成來完成代碼集成到主干分支之后的回歸測驗,通過自動化測驗的手段來實作產品的快速迭代,同時還能保證產品的高質量,
pip install -U pytest
查看版本
pytest --version
用例撰寫規范
- 測驗檔案以test_開頭(以_test結尾也可以)
- 測驗類以Test開頭,并且不能帶有 init 方法
- 測驗函式以test_開頭
- 斷言使用基本的assert即可
創建一個python檔案,命名以test_開頭(或者以_test結尾),創建測驗方法以test_開頭,測驗類需要以Test開頭,創建檔案名為test_add.py檔案,代碼如下:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
def add(x, y):
return x + y
def test_add():
assert add(1, 10) == 11
assert add(1, 1) == 2
assert add(1, 99) == 100
class TestClass:
def test_one(self):
x = "this"
assert "h" in x
def test_two(self):
x = "hello"
assert hasattr(x, "check")
運行 “test_add.py” 檔案,在命令列進入到這個檔案所在的路徑,可以直接使用 pytest 命令運行,pytest 會找當前目錄以及查找子目錄下所有的test_.py或_test.py的檔案,把其當作測驗檔案,在這些檔案里,pytest 會收集符合撰寫規范的函式,類以及方法,當作測驗用例并且執行,執行如下:
$ pytest
....
test_add.py ..F [100%]
....
self = <test_cases.test_add.TestClass object at 0x1091810d0>
def test_two(self):
x = "hello"
> assert hasattr(x, "check")
E AssertionError: assert False
E + where False = hasattr('hello', 'check')
test_add.py:18: AssertionError
=================================================== 1 failed, 2 passed in 0.05s
結果分析:執行結果中,F代表用例未通過(斷言錯誤),.代表用例通過,如果有報錯會有詳細的錯誤資訊,pytest也支持unittest模式的用例定義,
pytest 帶有很多引數,可以使用pytest --help來查看幫助檔案,下面介紹幾種常用的引數:
? 無引數
讀取路徑下所有符合規則的檔案,類,方法,函式全部執行,使用方法如下:
pytest 或者 py.test
? -v 引數
列印詳細運行日志資訊,一般在除錯的時候加上這個引數,終端會列印出每條用例的詳細日志資訊,方便定位問題,使用方法如下:
pytest -v
? -s 引數
帶控制臺輸出結果,當你的代碼里面有print輸出陳述句,如果想在運行結果中列印print輸出的代碼,在運行的時候可以添加-s引數,一般在除錯的時候使用,使用方法如下:
pytest -s
? -k 引數
跳過運行某個或者某些用例,應用場景:在測驗場景中,開發人員有一部分功能代碼還沒實作,測驗人員已經將測驗用例設計出來,或者測驗人員發現了某功能上的 bug 需要開發人員修復之后再測驗這部分有缺陷的測驗用例,可以將這部分測驗用例在運行的時候暫時跳過,等功能實作或者 bug 解決之后再加入運行,使用方法如下:
pytest -k '類名'
pytest -k '方法名'
pytest -k '類名 and not 方法名' #運行類里所有的方法,不包含某個方法
? -x 引數
遇到用例失敗立即停止運行,
應用場景:在回歸測驗程序中,假如一共有10潭訓礎用例,當開發人員打完包提交測驗的時候,需要先運行這10潭訓礎用例,全部通過才能提交給測驗人員正式測驗,如果有一條用例失敗,都將這個版本打回給開發人員,這時就可以添加-x引數,一旦發現有失敗的用例即中止運行,使用方法如下:
pytest -x
? –maxfail 引數
用例失敗個數達到閥值停止運行,具體用法:
pytest --maxfail=[num]
應用場景:在回歸測驗程序中,假如一共有10潭訓礎用例,當開發人員打完包提交測驗的時候,需要先運行這10潭訓礎用例,全部通過才能提交給測驗人員正式測驗,
如果運行程序中有 [num] 條用例失敗,即中止運行,后面測驗用例都放棄執行,直接退出,這時可以使用–maxfail引數,
? -m 引數
將運行有 @pytest.mark.[標記名] 這個標記的測驗用例,應用場景:在自動化測驗程序中可以將測驗用例添加標簽進行分類,比如登錄功能、搜索功能、購物車功能、訂單結算功能等,在運行的時候可以只運行某個功能的所有的測驗用例,比如這個版本只想驗證登錄功能,那就在所有登錄功能的測驗用例方法上面加上裝飾符@pytest.mark.login,運行的時候使用命令添加一個-m引數,例如執行pytest -m login命令就可以只執行登錄功能這部分的測驗用例,
使用方法如下:
pytest -m [標記名]
? 運行模式
pytest提供了多種運行模式,讓開發和除錯更得心應手,指定某個模塊,執行單獨一個pytest模塊,
應用場景:在撰寫測驗用例的時候,經常會單獨除錯某個類,或者某個方法,這時可以使用 Pycharm 里面自帶的除錯方式,點擊用例方法名前面的綠色按鈕,也可以使用命令列的方式單獨運行某個用例,
pytest 中可以使用pytest 檔案名.py單獨執行某個 python 檔案,也可以使用pytest 檔案名.py::類名單獨執行某個檔案中的類,使用pytest 檔案名.py::類名::方法名單獨執行類中的某個方法,使用方法如下:
pytest 檔案名.py
pytest 檔案名.py::類名
pytest 檔案名.py::類名::方法名
打開 Pycharm → 設定 → Tools → Python Integrated Tools → Testing: pytest
如果設定為 pytest ,需要安裝 pytest,可以直接按照這個頁面的提示點擊“fix”,也可以在 Project interpreter 里面添加 pytest 依賴包,

安裝完 pytest 之后,撰寫的符合規則的測驗用例都能被識別出來并且標出一個綠色的執行按鈕,點擊這個按鈕也能執行某個方法或者某個類,例如:
Pycharm 設定運行方式為 pytest 之后,用例左側會顯示綠色按鈕,可以直接點擊這個按鈕來執行這條用例,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/493096.html
標籤:其他
上一篇:資料在熊貓中被覆寫
