Pytest權威教程25-配置


返回: Pytest權威教程

配置

命令行選項和配置文件設置

你可以使用常規幫助選項獲取有關INI選項配置文件中命令行選項和值的幫助:

pytest -h   # prints options _and_ config file settings

這將顯示已安裝插件注冊的命令行和配置文件設置。

初始化:確定ROOTDIR和INIFILE

pytest根據rootdir命令行參數(指定的測試文件,路徑)以及ini-files的存在為每次測試運行確定一個。在啟動過程中,確定的文件rootdir和ini文件將作為pytest標頭的一部分打印。

以下是摘要的pytest用途rootdir:

  • 在收集期間構造nodeid;每個測試都分配有一個唯一的nodeid,該id植根於,rootdir並考慮了完整路徑,類名,函數名和參數化(如果有)。
  • 插件將其用作存儲項目/測試運行特定信息的穩定位置;例如,內部緩存插件在其中創建一個.pytest_cache子目錄rootdir來存儲其交叉測試運行狀態。

需要特別強調的是,rootdir它不用於修改sys.path/PYTHONPATH或影響模塊的導入方式。有關更多詳細信息,請參見:Pytest導入機制和系統路徑。

--rootdir=path命令行選項可用於強制使用特定目錄。可以配合使用在pytest.ini文件中的addopts項中添加該參數來包含特定目錄到環境變量中。

尋找rootdir

這是從中找到rootdir的算法args:

  • 確定指定的公共祖先目錄,這些目錄args被識別為文件系統中存在的路徑。如果找不到此類路徑,則將公共祖先目錄設置為當前工作目錄。
  • 尋找pytest.ini,tox.ini並setup.cfg在父目錄和文件向上。如果匹配,它將成為ini文件,並且其目錄將成為rootdir。
  • 如果未找到ini文件,請setup.py從公共祖先目錄向上查找以確定rootdir。
  • 如果沒有setup.py被發現,尋找pytest.ini,tox.ini並 setup.cfg在每個指定args向上。如果匹配,它將成為ini文件,並且其目錄將成為rootdir。
  • 如果找不到ini文件,則使用已經確定的公共祖先作為根目錄。這允許在不屬於包且沒有任何特定ini文件配置的結構中使用pytest。
  • 如果沒有args給出,pytest會在當前工作目錄下收集測試,並從那里開始確定rootdir。

注意:自定義pytest plugin命令行參數可能包含路徑,如中所示 。然后是強制性的,否則pytest使用test.log文件夾確定rootdir(另請參見問題1435)。也可以使用點來引用當前工作目錄。pytest --log-output ../../test.log argsargs.
請注意,現有的pytest.ini文件將始終被認為是匹配的,而tox.ini且setup.cfg只會如果包含匹配 [pytest]或[tool:pytest]部分,分別。多個ini-file候選文件中的選項永遠不會合並-第一個獲勝(pytest.ini即使不包含任何[pytest]部分,也總是成功)。

該config對象隨后將具有以下屬性:

  • config.rootdir:確定的根目錄,保證存在。
  • config.inifile:確定的ini文件可能是None。
    rootdir用作構建測試地址(“ nodeids”)的參考目錄,也可以由插件用於存儲每次測試運行信息。

例如:

pytest path/to/testdir path/other/

將確定共同祖先path,然后檢查ini文件,如下所示:

# first look for pytest.ini files
path/pytest.ini
path/tox.ini    # must also contain [pytest] section to match
path/setup.cfg  # must also contain [tool:pytest] section to match
pytest.ini
... # all the way down to the root

# now look for setup.py
path/setup.py
setup.py
... # all the way down to the root

如何更改命令行選項默認值

每次使用時,鍵入相同系列的命令行選項可能很麻煩pytest。例如,如果您始終希望查看有關跳過的測試和xfailed測試的詳細信息,以及具有簡短的“點”進度輸出,則可以將其寫入配置文件:

# content of pytest.ini or tox.ini
[pytest]
addopts = -ra -q

# content of setup.cfg
[tool:pytest]
addopts = -ra -q

另外,您可以設置PYTEST_ADDOPTS環境變量以在使用環境時添加命令行選項:

export PYTEST_ADDOPTS="-v"

這是在addopts或環境變量存在的情況下構建命令行的方式:

<pytest.ini:addopts> $PYTEST_ADDOPTS <extra command-line arguments>

因此,如果用戶在命令行中執行:

pytest -m slow

執行的實際命令行為:

pytest -ra -q -v -m slow

請注意,與其他命令行應用程序一樣,在選項沖突的情況下,最后一個將獲勝,因此上面的示例將顯示冗長的輸出,因為-voverwrites -q。

內置的配置文件選項

有關選項的完整列表,請參考參考文檔。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM