[跟著官方文檔學pytest][二][學習筆記]

      網友投稿 736 2022-05-29

      1.如何調用pytest

      通常,使用命令pytest調用pytest(有關調用 pytest 的其他方法,請參見下文)。這將在當前目錄及其子目錄中名稱遵循test_*.py或\*_test.py形式的所有文件中執行所有測試。更一般地說,pytest遵循標準的測試發現規則。

      1.1.指定要運行的測試

      Pytest支持多種從命令行運行和選擇測試的方法。

      在module運行測試

      pytest test_mod.py

      在目錄運行測試

      pytest testing/

      通過關鍵字表達式運行測試

      這將運行包含與給定字符串表達式匹配的名稱(不區分大小寫)的測試,其中可以包括使用文件名、類名和函數名作為變量的 Python運算符。上面的示例將運行TestMyClass.test_something但不是TestMyClass.test_method_simple。

      pytest -k "MyClass and not method"

      通過node ids運行測試

      每個收集到的測試都分配有一個唯一的nodeid,它由模塊文件名和后面的說明符組成,如類名、函數名和來自參數化的參數,用 :: 字符分隔。

      運行module中指定的測試

      pytest test_mod.py::test_func

      另一個運行指定測試的例子

      pytest test_mod.py::TestClass::test_method

      通過marker expressions運行測試

      pytest -m slow

      將運行所有使用 @pytest.mark.slow 裝飾器裝飾的測試。

      從包運行測試

      pytest --pyargs pkg.testing

      這將導入pkg.testing并使用其文件系統位置來查找和運行測試。

      1.2.獲取版本、選項、名字、環境變量幫助

      pytest --version #獲取版本 pytest --fixtures #顯示可用的內置功能參數 pytest -h | --help #獲取幫助

      1.3.分析測試執行持續時間

      要獲得超過1.0秒的最慢10個測試持續時間的列表:

      pytest --durations=10 --durations-min=1.0

      默認情況下,除非在命令行上添加了-vv,否則pytest不會顯示太小(<0.005s)的測試持續時間。

      1.4.管理插件的加載

      1.4.1.早期加載插件

      可以使用-p選項在命令行中顯式地提前加載插件(內部和外部):

      pytest -p mypluginmodule

      該選項接收一個名稱參數,可以是:

      完整的模塊名稱,例如myproject.plugins。 這個帶點的名稱必須是可導入的。

      插件的入口點名稱。這是注冊插件時傳遞給setuptools的名稱。例如,要提前加載pytest-cov插件,您可以使用:

      pytest -p pytest_cov

      1.4.2.禁用插件

      要在調用時禁用加載特定插件,請使用-p選項和前綴no:

      示例:要禁用加載插件doctest,該插件負責從文本文件執行doctest測試,請像這樣調用pytest:

      pytest -p no:doctest

      [跟著官方文檔學pytest][二][學習筆記]

      1.5.其他方法調用pytest

      1.5.1.通過python -m pytest

      可以從命令行通過Python解釋器調用測試:

      python -m pytest [...]

      這幾乎等同于直接調用命令行腳本pytest […],只是通過python調用還會將當前目錄添加到sys.path中。

      1.5.2.通過Python代碼

      可以直接通過Python代碼調用pytest

      retcode = pytest.main()

      這就像從命令行調用“pytest”一樣。它不會引發SystemExit而是返回退出代碼。可以傳入選項和參數:

      retcode = pytest.main(["-x","mytestdir"])

      可以為pytest.main指定其他插件:

      # content of myinvoke.py import pytest import sys class MyPlugin: def pytest_sessionfinish(self): print("*** test run reporting finishing") if __name__ == "__main__": sys.exit(pytest.main(["-qq"], plugins=[MyPlugin()]))

      運行它將顯示MyPlugin已添加并且它的鉤子已被調用:

      python .\myinvoke.py *** test run reporting finishing

      注意:調用pytest.main()將導致導入的測試以及它們導入的任何模塊。由于python導入系統的緩存機制,從同一進程對pytest.main()的后續調用將不會反映調用之間對這些文件的更改。因此,不建議從同一進程多次調用pytest.main()(例如,為了重新運行測試)。

      Python

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:[跟著官方文檔學pytest][三][學習筆記]
      下一篇:《 Kubernetes進階實戰》一2.1Kubernetes快速入門
      相關文章
      亚洲色图综合网站| 亚洲人成电影在线天堂| 亚洲熟妇无码爱v在线观看| 亚洲精品成人片在线播放| 中文字幕中韩乱码亚洲大片 | 亚洲视频在线一区| 亚洲AV无码久久精品狠狠爱浪潮| 亚洲精品无码久久千人斩| 国产日韩亚洲大尺度高清| 久久被窝电影亚洲爽爽爽| 久久精品国产精品亚洲精品| 亚洲精品制服丝袜四区| 国产亚洲精品无码成人| 亚洲AV无码久久精品成人| 久久久久久a亚洲欧洲AV| 亚洲av无码不卡一区二区三区| 亚洲国产人成在线观看69网站 | 久久精品国产亚洲av麻豆| 久久亚洲国产成人亚| 亚洲尹人九九大色香蕉网站| 91亚洲精品视频| 亚洲精品不卡视频| 亚洲一级毛片视频| 亚洲性色AV日韩在线观看| 亚洲jizzjizz少妇| 亚洲AV无码乱码精品国产| 亚洲一区二区视频在线观看 | 亚洲国产精品成人精品无码区在线| 午夜亚洲AV日韩AV无码大全| 久久精品国产亚洲AV高清热 | 狠狠色婷婷狠狠狠亚洲综合| 国产V亚洲V天堂A无码| 亚洲视频在线观看免费| 亚洲日韩中文字幕| 天天爽亚洲中文字幕| 亚洲精品无码av中文字幕| 亚洲AV无码乱码精品国产| 亚洲精品乱码久久久久久中文字幕| 亚洲AV无码专区电影在线观看| 777亚洲精品乱码久久久久久 | 亚洲欧美日韩综合久久久|