配置
命令行選項和配置文件設置
你可以使用常規幫助選項獲取有關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。
內置的配置文件選項
有關選項的完整列表,請參考參考文檔。