【Pytest官方文檔翻譯及學習】2.1 如何調用pytest

目錄

2.1 如何調用pytest

2.1.1 指定要運行的測試

2.1.2 獲取有關版本、選項名稱、環境變量的幫助

2.1.3 分析測試執行時間

2.1.4 管理加載插件

2.1.5 調用pytest的其他方式


2.1 如何調用pytest

2.1.1 指定要運行的測試

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

在模塊中運行測試

pytest test_mod.py

在目錄中運行測試

pytest testing/

按關鍵字表達式運行測試

pytest -k 'MyClass and not method'

這將運行包含與給定名稱匹配的名稱的測試字符串表達式 (不區分大小寫),它可以包括使用文件名、類名和函數名作為變量的Python運算符。上面的例子將運行 TestMyClass.test_something 但不是 TestMyClass.test_method_simple。在Windows系統上運行時使用雙引號("")而不是單引號('')來表示表達式。

按節點ID運行測試

每個收集到的測試都被分配一個唯一的節點ID(nodeid),該節點ID由模塊文件名和后綴組成,后綴包括類名、函數名和由參數化生成的參數,這些部分以雙冒號(::)分隔。

要在模塊中運行特定測試,請執行以下操作:

pytest test_mod.py::test_func

在命令行中指定測試方法的另一個示例:

pytest test_mod.py::TestClass::test_method

通過標記表達式運行測試

pytest -m slow

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

有關詳細信息,請參見 marks。

從包運行測試

pytest --pyargs pkg.testing

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

2.1.2 獲取有關版本、選項名稱、環境變量的幫助

pytest --version # shows where pytest was imported from(顯示pytest的導入位置)
pytest --fixtures # show available builtin function arguments (顯示可用的內置函數參數)
pytest -h | --help # show help on command line and config file options(顯示有關命令行和配置文件選項的幫助)

2.1.3 分析測試執行時間

在6.0版中進行了更改。

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

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

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

2.1.4 管理加載插件

早期加載插件(Early loading plugins)

您可以使用-p選項在命令行中顯示早期加載插件(內部和外部):

pytest -p mypluginmodule

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

  • 完整的模塊虛線名稱,例如myproject.plugins。此虛線名稱必須是可導入的。
  • 插件的入口點名稱。這是注冊插件時傳遞給setuptools的名稱。例如,要提前加載pytest-cov插件,您可以使用:
pytest -p pytest_cov

禁用插件(Disabling plugins)

要禁用在調用時加載特定插件,請將-p選項與前綴no:一起使用。

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

pytest -p no:doctest

2.1.5 調用pytest的其他方式

通過python -m pytest調用pytest

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

python -m pytest [...]

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

從Python代碼調用pytest

您可以直接從Python代碼中調用pytest:

retcode = pytest.main() 

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

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

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

# content of myinvoke.py
import sys
import pytest
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()(例如,為了重新運行測試)。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/11410.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/11410.shtml
英文地址,請注明出處:http://en.pswp.cn/web/11410.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

證明力引導算法forceatlas2為什么不是啟發式算法

一、基本概念 吸引力 F a ( n i ) ∑ n j ∈ N c t d ( n i ) ω i , j d E ( n i , n j ) V i , j \displaystyle \bm{F}_a(n_i) \sum_{n_j \in \mathcal{N}_{ctd}(n_i)} \omega_{i,j} \; d_E(n_i,n_j) \bm{V}_{i,j} Fa?(ni?)nj?∈Nctd?(ni?)∑?ωi,j?dE?(ni?,nj?…

class常量池、運行時常量池和字符串常量池的關系

類常量池、運行時常量池和字符串常量池這三種常量池,在Java中扮演著不同但又相互關聯的角色。理解它們之間的關系,有助于深入理解Java虛擬機(JVM)的內部工作機制,尤其是在類加載、內存分配和字符串處理方面。 類常量池…

MinCED:注釋CRISPRs

GitHub - ctSkennerton/minced: Mining CRISPRs in Environmental Datasets 安裝 git clone http://github.com/ctSkennerton/minced cd minced make 使用 gunzip -k * cat *.fa > all_MAG_contig.fasta /home/zhongpei/hard_disk_sda2/zhongpei/Software/minced/minced…

NeurIPS‘24 截稿日期逼近 加拿大溫哥華邀你共赴盛會

會議之眼 快訊 第38屆NeurIPS24(Conference and Workshop on Neural Information Processing Systems)即神經信息處理系統研討會將于 2024 年 12月9日-15日在加拿大溫哥華會議中心舉行! NeurIPS 每一年都是全球AI領域的一場盛宴,吸引著來自世界各地的頂…

暴雨信息:IT是新質生產力的賦能者

5月11日下午,2024全球徽商上海論壇在上海國際會議中心舉辦。暴雨信息孫輝在會上發表歡迎辭。孫輝在致辭和會后接受采訪時表示,發展新質生產力要以“智”提質,發揮人工智能作為培育新質生產力的引擎作用,通過推廣混合式人工智能&am…

【小白誤闖】Activiti 框架你不得不知道的一些事

Activiti 是一個輕量級的、以Java為中心的開源工作流和業務流程管理(BPM)平臺。它允許用戶在業務應用程序中定義、執行和監控業務流程。以下是Activiti的核心組件: 8個核心組件概述 Activiti Engine:這是Activiti最核心的部分&am…

Java 面試問題及答案

Java 面試問題及答案 問題 1: 什么是Java虛擬機(JVM)?請簡述其主要組成部分及其作用。 回答: Java虛擬機(JVM)是一個可以執行Java字節碼的虛擬計算機。它是Java平臺的核心組成部分,使得Java能夠實現其核心特性之一&a…

Elasticsearch映射定義

文章目錄 認識映射元字段數據類型1.基本數據類型2.復雜數據類型專用數據類型多字段類型 認識映射 映射類似于關系型數據庫中的Schema(模式)。Schema在關系型數據庫中是指庫表包含的字段及字段存儲類型等基礎信息。 映射定義由兩部分組成:元…

一些python包缺失帶來的報錯及解決辦法

描述 一些python包缺失帶來的報錯及解決辦法 安裝 ModuleNotFoundError: No module named cv2 pip install opencv-pythonModuleNotFoundError: No module named torch 我的CSDN博客ModuleNotFoundError: No module named colorama pip install coloramaModuleNotFoundError…

5.10.8 Transformer in Transformer

Transformer iN Transformer (TNT)。具體來說,我們將局部補丁(例如,1616)視為“視覺句子”,并將它們進一步劃分為更小的補丁(例如,44)作為“視覺單詞”。每個單詞的注意力將與給定視…

信號和槽基本概念

🐌博主主頁:🐌?倔強的大蝸牛🐌? 📚專欄分類:QT??感謝大家點贊👍收藏?評論?? 目錄 一、概述 二、信號的本質 三、槽的本質 一、概述 在 Qt 中,用戶和控件的每次交互過程稱…

Bootloader+升級方案

隨著設備的功能越來越強大,系統也越來越復雜,產品升級也成為了開發過程不可或缺的一道程序。在工程應用中,如何在不更改硬件的前提下通過軟件的方式實現產品升級。通過Bootloader來實現固件的升級是一種極好的方式,Bootloader是單…

I2CKD : INTRA- AND INTER-CLASS KNOWLEDGE DISTILLATION FOR SEMANTIC SEGMENTATION

摘要 本文提出了一種新的針對圖像語義分割的知識蒸餾方法,稱為類內和類間知識蒸餾(I2CKD)。該方法的重點是在教師(繁瑣模型)和學生(緊湊模型)的中間層之間捕獲和傳遞知識。對于知識提取&#x…

12個乒乓球,有一個次品,不知輕重,用一臺無砝碼天平稱三次,找出次品,告知輕重?

前言 B站上看到個視頻:為什么有人不認可清北的學生大多是智商高的? 然后試了下,發現我真菜 自己的思路(失敗) 三次稱重要獲取到12個乒乓球中那個是次品,我想著將12個小球編號,分為四組,每組…

yo!這里是socket網絡編程相關介紹

目錄 前言 基本概念 源ip&&目的ip 源端口號&&目的端口號 udp&&tcp初識 socket編程 網絡字節序 socket常見接口 socket bind listen accept connect 地址轉換函數 字符串轉in_addr in_addr轉字符串 套接字讀寫函數 recvfrom&&a…

Java入門基礎學習筆記2——JDK的選擇下載安裝

搭建Java的開發環境: Java的產品叫JDK(Java Development Kit: Java開發者工具包),必須安裝JDK才能使用Java。 JDK的發展史: LTS:Long-term Support:長期支持版。指的Java會對這些版…

pycharm報錯Process finished with exit code -1073740791 (0xC0000409)

pycharm報錯Process finished with exit code -1073740791 (0xC0000409) 各種垃圾文章(包括chatgpt產生的垃圾文章),沒有給出具體的解決辦法。 解決辦法就是把具體報錯信息顯示出來,然后再去查。 勾選 然后再運行就能把錯誤顯示…

MetaRTC-play拉流客戶端代碼分析

渲染使用opengl,音頻播放使用alsa。 當點擊播放按鈕后,以此調用的類如下,開始建立rtc連接,AV解碼,音頻渲染,視頻渲染。 如果想去除QT,改為cmake工程管理,去掉渲染部分即可。 下方是…

VUE+PrintJS打印-邊距設置問題(提供解決方案)

VUE打印我們一般用printJS,雖然它也提供了邊距設置,但不管怎么調,感覺都不對,也換其他組件試過,沒啥區別,并不能解決問題。 今天又發來個需求,要求設置打印頁面的上、下、左、右邊距&#xff0…

Linux---vim編輯器(續寫)

5. vim正常模式命令集 插入模式 按「i」切換進入插入模式「insert mode」, 按“i”進入插入模式后是從光標當前位置開始輸入文件; 按「a」進入插入模式后,是從目前光標所在位置的下一個位置開始輸入文字; 按「o」進入插入模式…