Pytest 測試用例的執行方式(2)

2022-05-12 15:11:23 字數 2111 閱讀 1247

在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...