目錄:
- 安裝及入門
- 使用和調用方法
- 原有TestSuite使用方法
- 斷言的編寫和報告
- Pytest fixtures:清晰 模塊化 易擴展
- 使用Marks標記測試用例
- Monkeypatching/對模塊和環境進行Mock
- 使用tmp目錄和文件
- 捕獲stdout及stderr輸出
- 捕獲警告信息
- 模塊及測試文件中集成doctest測試
- skip及xfail: 處理不能成功的測試用例
- Fixture方法及測試用例的參數化
- 緩存: 使用跨執行狀態
- unittest.TestCase支持
- 運行Nose用例
- 經典xUnit風格的setup/teardown
- 安裝和使用插件
- 插件編寫
- 編寫鉤子(hook)方法
- 運行日志
- API參考
- 優質集成實踐
- 片狀測試
- Pytest導入機制及sys.path/PYTHONPATH
- 配置選項
- 示例及自定義技巧
- Bash自動補全設置
配置選項
命令行選項和配置文件設置
你可以使用常規幫助選項獲取INI樣式配置文件中命令行選項和值的幫助:
pytest -h # prints options _and_ config file settings
這將顯示已安裝插件注冊的命令行和配置文件設置。
初始化:確定ROOTDIR和INIFILE
版本2.7中的新功能。
pytest rootdir
為每次測試運行確定a ,這取決于命令行參數(指定的測試文件,路徑)和ini文件的存在。確定的rootdir
和ini文件在啟動期間作為pytest標題的一部分打印。
下面是一個總結pytest
用途rootdir
為:
- 在收集期間構造nodeids ; 每個測試都分配了一個唯一的nodeid,它以root為根,
rootdir
并考慮了完整路徑,類名,函數名和參數化(如果有的話)。 - 插件使用它作為存儲項目/測試運行特定信息的穩定位置; 例如,內部緩存插件創建一個
.pytest_cache
子目錄rootdir
以存儲其交叉測試運行狀態。
重要的是要強調的是,rootdir
是不是用來修改sys.path
/ PYTHONPATH
或影響模塊的導入方式。有關更多詳細信息,請參閱pytest import mechanisms和sys.path / PYTHONPATH。
--rootdir=path
命令行選項可用于強制特定目錄。該目錄通過可以包含環境變量,當它配合使用addopts
的pytest.ini
文件。
找到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文件,請使用已確定的共同祖先作為根目錄。這允許在不屬于包的結構中使用pytest,并且沒有任何特定的ini文件配置。
如果沒有args
給出,pytest會在當前工作目錄下收集測試,并從那里開始確定rootdir。
<colgroup><col class="field-name" style="hyphens: manual;"><col class="field-body"></colgroup>
| 警告: | 自定義pytest插件命令行參數可以包含路徑,如 。然后是必需的,否則pytest使用test.log的文件夾進行rootdir確定(另請參閱問題1435)。一個點為參照,以當前的工作目錄也是可能的。pytest --log-output ../../test.log args``args
.
|
請注意,現有的pytest.ini
文件將始終被認為是匹配的,而tox.ini
且setup.cfg
只會如果包含匹配 [pytest]
或[tool:pytest]
部分,分別。來自多個ini文件候選者的選項永遠不會合并 - 第一個獲勝(pytest.ini
總是獲勝,即使它不包含一個[pytest]
部分)。
該config
對象隨后將具有以下屬性:
-
config.rootdir
:確定的根目錄,保證存在。 -
config.inifile
:確定的ini文件,可能是None
。
rootdir用于構造測試地址(“nodeids”)的參考目錄,并且插件也可以用于存儲每個testrun信息。
例:
pytest path/to/testdir path/other/
將確定共同的祖先path
,然后檢查ini文件如下:
# first look for pytest.ini files
path/pytest.ini
path/setup.cfg # must also contain [tool:pytest] section to match
path/tox.ini # must also contain [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
# setup.cfg files should use [tool:pytest] section instead
[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
請注意,與其他命令行應用程序一樣,如果選項沖突,則最后一個獲勝,因此上面的示例將顯示詳細輸出,因為會-v
覆蓋-q
。
內置配置文件選項
有關選項的完整列表,請參閱參考文檔。