在pytest框架中,編寫測試用例有如下約束:
在滿足上面約束後,有兩種方式來執行測試用例:
主函式方式
命令列方式
使用pytest.main()方式執行用例,如果不加引數,會自動從當前目錄及子目錄中尋找符合上述約束的測試用例來執行。
import執行結果pytest
class
testpractice:
deftest_01(self):
print("
執行用例1")
deftest_02(self):
print("
執行用例2")
if__name__ == '
__main__':
pytest.main()
從上面的結果中,可以看到,print()列印的資訊未顯示,可以使用-s引數顯示列印資訊
...(省略)注意引數格式是列表if__name__ == '
__main__':
pytest.main(["-s
"])
上面的pytest.main()是寫在用例檔案中的,我們可以將其獨立出來,結構如下
每個測試用例都有乙個唯一的nodeid,節點id格式為 「相對於執行檔案的用例檔案路徑::類名::用例名」。可以使用-v引數,檢視執行的詳細資訊,詳細資訊包含了用例的節點id。
在知道了用例的節點id後,只需要將用例的節點id以引數的形式傳入,就可以執行指定用例了。
命令列方式與主函式相差不大,區別是主函式是以列表新增引數,命令列是以空格新增引數。
#命令列引數,用空格分隔
addopts = -v -s
#讀取測試用例的起始資料夾
testpaths = ./testcase
#配置搜尋的模組檔名稱
python_files = test*.py
#配置搜尋的測試類名
python_classes = test
#配置搜尋的測試方法名
python_functions = test
複製上面資訊,在專案根目錄建立pytest.ini,將複製的資訊貼上進去,然後執行用例。
注意:此時會報錯:unicodedecodeerror: 'gbk' codec can't decode
原因是我們在配置檔案中使用了中文,解決方法有兩種:
點選倒數第二行的報錯,在其前面一行**的open()函式中增加 encoding='utf-8' 就能解決問題
解決報錯問題後,就可以通過修改配置檔案執行我們想要執行的用例了,比如,執行類名以a開頭用例以b開頭的用例
PYTEST中對測試用例標記執行
標記三種方式 1 顯式指定函式名,通過 標記 pytest test.py test012 模糊查詢,使用 k標識 pytest k test test.py3 使用pytest.mark在函式上標記 建立pytest.ini檔案 注意縮排 pytest markers do do undo und...
Pytest獲取測試用例執行結果儲存log檔案
pytest 提供的pytest runtest makereport鉤子方法,獲取每個用例的執行結果。from pytest import runner 對應原始碼 def pytest runtest makereport item,call return a py class pytest.r...
pytest實現測試用例引數化
本文總www.cppcns.com結pytest的測試用例引數化。軟體測試中,輸入相應值,檢查期望值,是常見測試方法。在自動化測試中,乙個測試用例對應乙個測試點,通常一組測試資料無法完全覆蓋測試範圍,所以,需要引數化來傳遞多組資料。pytest的測試用例引數化使用如下裝飾器即可完成。pytest.m...