Pytest官方教程-26-配置選項

目錄:

  1. 安裝及入門
  2. 使用和調用方法
  3. 原有TestSuite使用方法
  4. 斷言的編寫和報告
  5. Pytest fixtures:清晰 模塊化 易擴展
  6. 使用Marks標記測試用例
  7. Monkeypatching/對模塊和環境進行Mock
  8. 使用tmp目錄和文件
  9. 捕獲stdout及stderr輸出
  10. 捕獲警告信息
  11. 模塊及測試文件中集成doctest測試
  12. skip及xfail: 處理不能成功的測試用例
  13. Fixture方法及測試用例的參數化
  14. 緩存: 使用跨執行狀態
  15. unittest.TestCase支持
  16. 運行Nose用例
  17. 經典xUnit風格的setup/teardown
  18. 安裝和使用插件
  19. 插件編寫
  20. 編寫鉤子(hook)方法
  21. 運行日志
  22. API參考
    1. 方法(Functions)
    2. 標記(Marks)
    3. 鉤子(Hooks)
    4. 裝置(Fixtures)
    5. 對象(Objects)
    6. 特殊變量(Special Variables)
    7. 環境變量(Environment Variables)
    8. 配置選項(Configuration Options)
  23. 優質集成實踐
  24. 片狀測試
  25. Pytest導入機制及sys.path/PYTHONPATH
  26. 配置選項
  27. 示例及自定義技巧
  28. Bash自動補全設置

配置選項

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

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

pytest -h   # prints options _and_ config file settings

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

初始化:確定ROOTDIR和INIFILE

版本2.7中的新功能。

pytest rootdir為每次測試運行確定a ,這取決于命令行參數(指定的測試文件,路徑)和ini文件的存在。確定的rootdirini文件在啟動期間作為pytest標題的一部分打印。

下面是一個總結pytest用途rootdir為:

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

重要的是要強調的是,rootdir不是用來修改sys.path/ PYTHONPATH或影響模塊的導入方式。有關更多詳細信息,請參閱pytest import mechanisms和sys.path / PYTHONPATH

--rootdir=path命令行選項可用于強制特定目錄。該目錄通過可以包含環境變量,當它配合使用addoptspytest.ini文件。

找到rootdir

以下是從以下位置查找rootdir的算法args

  • 確定指定的公共祖先目錄,這些目錄args被識別為文件系統中存在的路徑。如果未找到此類路徑,則將共同的祖先目錄設置為當前工作目錄。
  • 尋找pytest.initox.inisetup.cfg在父目錄和文件向上。如果匹配一個,它將成為ini文件,其目錄將成為rootdir。
  • 如果沒有找到ini文件,請setup.py從共同的祖先目錄中查找以確定rootdir
  • 如果沒有setup.py找到,請查找pytest.initox.inisetup.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.inisetup.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

內置配置文件選項

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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容