Pytest官方教程-22-API參考-Configuration Options

目錄:

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

API參考-Configuration Options

配置選項(xiàng)

這里是一個(gè)可以在被寫(xiě)入內(nèi)置的配置選項(xiàng)的列表pytest.initox.inisetup.cfg 通常位于版本庫(kù)的根文件。所有選項(xiàng)必須在一個(gè)[pytest]部分下([tool:pytest]對(duì)于setup.cfg文件)。
警告
的使用setup.cfg是不推薦,除非非常簡(jiǎn)單的用例。.cfg 文件使用不同的解析器pytest.initox.ini這可能導(dǎo)致難以追蹤問(wèn)題。如果可能,建議使用后面的文件來(lái)保存pytest配置。
配置文件選項(xiàng)可以通過(guò)使用在命令行中覆蓋,-o/--override也可以多次傳遞。預(yù)期的格式是name=value。例如:

pytest -o console_output_style=classic -o cache_dir=/tmp/mycache

addopts
將指定OPTS的命令行參數(shù)添加到命令行參數(shù)集中,就像它們已由用戶(hù)指定一樣。示例:如果你有此ini文件內(nèi)容:

# content of pytest.ini
[pytest]
addopts = --maxfail=2 -rf  # exit after 2 failures, report fail info

發(fā)行實(shí)際意味著:pytest test_hello.py

pytest --maxfail=2 -rf test_hello.py

默認(rèn)是不添加選項(xiàng)。

cache_dir
設(shè)置存儲(chǔ)緩存插件內(nèi)容的目錄。默認(rèn)目錄是 .pytest_cacherootdir中創(chuàng)建的。目錄可以是相對(duì)路徑或絕對(duì)路徑。如果設(shè)置相對(duì)路徑,則相對(duì)于rootdir創(chuàng)建目錄。另外,path可能包含將被擴(kuò)展的環(huán)境變量。有關(guān)緩存插件的更多信息,請(qǐng)參閱緩存:使用跨testrun狀態(tài)

confcutdir
設(shè)置向上搜索conftest.py文件的目錄。默認(rèn)情況下,pytest將停止conftest.py從項(xiàng)目的pytest.ini/ tox.ini/ 向上搜索文件(setup.cfg如果有),或者直到文件系統(tǒng)根目錄。

console_output_style
運(yùn)行測(cè)試時(shí)設(shè)置控制臺(tái)輸出樣式:

  • classic:經(jīng)典的pytest輸出。
  • progress:喜歡經(jīng)典的pytest輸出,但帶有進(jìn)度指示器。
  • count:像進(jìn)度一樣,但隨著測(cè)試完成次數(shù)而不是百分比顯示進(jìn)度。
    默認(rèn)值為progress,但classic如果你愿意,或者新模式導(dǎo)致意外問(wèn)題,你可以回退到:
# content of pytest.ini
[pytest]
console_output_style = classic

doctest_encoding
用于解碼帶有文檔字符串的文本文件的默認(rèn)編碼。 看看pytest如何處理doctests

doctest_optionflags
標(biāo)準(zhǔn)doctest模塊中的一個(gè)或多個(gè)doctest標(biāo)志名稱(chēng)。 看看pytest如何處理doctests

empty_parameter_set_mark
允許在參數(shù)化中為空參數(shù)選擇操作

  • skip 使用空參數(shù)跳過(guò)測(cè)試(默認(rèn))
  • xfail 使用空參數(shù)標(biāo)記測(cè)試為xfail(run = False)
  • fail_at_collect 如果parametrize收集空參數(shù)集,則引發(fā)異常
# content of pytest.ini
[pytest]
empty_parameter_set_mark = xfail

注意
計(jì)劃xfail在將來(lái)的版本中更改此選項(xiàng)的默認(rèn)值,因?yàn)檫@被認(rèn)為不易出錯(cuò), 有關(guān)詳細(xì)信息,請(qǐng)參閱#3155

filterwarnings
設(shè)置應(yīng)為匹配的警告采取的過(guò)濾器和操作的列表。默認(rèn)情況下,測(cè)試會(huì)話(huà)期間發(fā)出的所有警告都將在測(cè)試會(huì)話(huà)結(jié)束時(shí)顯示在摘要中。

# content of pytest.ini
[pytest]
filterwarnings =
 error
 ignore::DeprecationWarning

這告訴pytest忽略棄用警告并將所有其他警告變?yōu)殄e(cuò)誤。有關(guān)更多信息,請(qǐng)參閱警告捕獲

junit_family
版本4.2中的新功能。
配置生成的JUnit XML文件的格式。可能的選擇是:

  • xunit1(或legacy):生成舊樣式輸出,與xunit 1.0格式兼容。這是默認(rèn)值
  • xunit2:生成xunit 2.0樣式輸出
    哪個(gè)應(yīng)該與最新的Jenkins版本更兼容。
[pytest]
junit_family = xunit2

junit_suite_name
要設(shè)置根測(cè)試套件xml項(xiàng)的名稱(chēng),可以junit_suite_name在配置文件中配置該選項(xiàng):

[pytest]
junit_suite_name = my_suite

log_cli_date_format
設(shè)置一個(gè)time.strftime()兼容的字符串,該字符串將在格式化實(shí)時(shí)日志記錄的日期時(shí)使用。

[pytest]
log_cli_date_format = %Y-%m-%d %H:%M:%S

有關(guān)更多信息,請(qǐng)參閱實(shí)時(shí)日志

log_cli_format
設(shè)置logging用于格式化實(shí)時(shí)日志記錄消息的兼容字符串。

[pytest]
log_cli_format = %(asctime)s %(levelname)s %(message)s

有關(guān)更多信息,請(qǐng)參閱實(shí)時(shí)日志

log_cli_level
設(shè)置應(yīng)為實(shí)時(shí)日志記錄捕獲的最小日志消息級(jí)別。可以使用整數(shù)值或級(jí)別的名稱(chēng)。

[pytest]
log_cli_level = INFO

有關(guān)更多信息,請(qǐng)參閱實(shí)時(shí)日志

log_date_format
設(shè)置time.strftime()與日志記錄捕獲格式化日期時(shí)將使用的兼容字符串。

[pytest]
log_date_format = %Y-%m-%d %H:%M:%S

有關(guān)更多信息,請(qǐng)參閱日志記錄

log_file
pytest.ini除了活動(dòng)的其他日志記錄工具之外,還應(yīng)設(shè)置相對(duì)于應(yīng)寫(xiě)入日志消息的文件的文件名。

[pytest]
log_file = logs/pytest-logs.txt

有關(guān)更多信息,請(qǐng)參閱日志記錄

log_file_date_format
設(shè)置time.strftime()在格式化日志文件的日期時(shí)將使用的兼容字符串。

[pytest]
log_file_date_format = %Y-%m-%d %H:%M:%S

有關(guān)更多信息,請(qǐng)參閱日志記錄

log_file_format
設(shè)置一個(gè)logging兼容的字符串,用于格式化重定向到日志文件的日志消息。

[pytest]
log_file_format = %(asctime)s %(levelname)s %(message)s

有關(guān)更多信息,請(qǐng)參閱日志記錄

log_file_level
設(shè)置應(yīng)為日志記錄文件捕獲的最小日志消息級(jí)別。可以使用整數(shù)值或級(jí)別的名稱(chēng)。

[pytest]
log_file_level = INFO

有關(guān)更多信息,請(qǐng)參閱日志記錄

log_format
設(shè)置logging用于格式化捕獲的日志消息的兼容字符串。

[pytest]
log_format = %(asctime)s %(levelname)s %(message)s

有關(guān)更多信息,請(qǐng)參閱日志記錄

log_level
設(shè)置應(yīng)記錄捕獲的最小日志消息級(jí)別。可以使用整數(shù)值或級(jí)別的名稱(chēng)。

[pytest]
log_level = INFO

有關(guān)更多信息,請(qǐng)參閱日志記錄

log_print
如果設(shè)置為False,將禁用顯示失敗測(cè)試的捕獲日志消息。

[pytest]
log_print = False

有關(guān)更多信息,請(qǐng)參閱日志記錄

markers
使用--strict命令行參數(shù)時(shí),只允許使用已知的標(biāo)記(由代碼核心pytest或某些插件定義)。你可以在此設(shè)置中列出其他標(biāo)記,以將其添加到白名單。
你可以列出每行一個(gè)標(biāo)記名稱(chēng),從選項(xiàng)名稱(chēng)縮進(jìn)。

[pytest]
markers =
 slow
 serial

minversion
指定運(yùn)行測(cè)試所需的最小pytest版本。

# content of pytest.ini
[pytest]
minversion = 3.0  # will fail if we run with pytest-2.8

norecursedirs
設(shè)置目錄basename模式以避免在遞歸測(cè)試發(fā)現(xiàn)時(shí)使用。各個(gè)(fnmatch樣式)模式應(yīng)用于目錄的基本名稱(chēng),以決定是否遞歸到目錄。模式匹配字符:

*       matches everything
?       matches any single character
[seq]   matches any character in seq
[!seq]  matches any char not in seq

默認(rèn)模式是。設(shè)置替換默認(rèn)值。以下是如何避免某些目錄的示例:'.*', 'build', 'dist','CVS', '_darcs', '{arch}', '*.egg', 'venv'``norecursedirs

[pytest]
norecursedirs = .svn _build tmp*

這將告訴pytest我們不要查看典型的subversion或sphinx-build目錄或任何tmp前綴目錄。
此外,pytest將嘗試通過(guò)激活腳本的存在智能地識(shí)別和忽略virtualenv。除非??collect?in?virtualenv給出,否則在測(cè)試收集期間不會(huì)考慮任何被視為虛擬環(huán)境根目錄的目錄。另請(qǐng)注意, norecursedirs優(yōu)先于??collect?in?virtualenv; 例如,如果你打算在virtualenv中使用匹配的基本目錄運(yùn)行測(cè)試 ,則除了使用該標(biāo)志外, '.*'必須覆蓋。norecursedirs``??collect?in?virtualenv

python_classes
一個(gè)或多個(gè)名稱(chēng)前綴或glob樣式模式,用于確定考慮用于測(cè)試集合的類(lèi)。通過(guò)在模式之間添加空格來(lái)搜索多個(gè)glob模式。默認(rèn)情況下,pytest會(huì)將任何以前綴Test為前綴的類(lèi)視為測(cè)試集合。以下是如何從以下結(jié)尾的類(lèi)中收集測(cè)試的示例Suite

[pytest]
python_classes = *Suite

請(qǐng)注意,unittest.TestCase無(wú)論此選項(xiàng)如何,始終都會(huì)收集派生類(lèi),因?yàn)?code>unittest自己的集合框架用于收集這些測(cè)試。

python_files
一個(gè)或多個(gè)Glob樣式的文件模式,用于確定哪些python文件被視為測(cè)試模塊。通過(guò)在模式之間添加空格來(lái)搜索多個(gè)glob模式:

[pytest]
python_files = test_*.py check_*.py example_*.py

或者每行一個(gè):

[pytest]
python_files =
 test_*.py
 check_*.py
 example_*.py

默認(rèn)情況下,匹配的文件test_*.py*_test.py將被視為測(cè)試模塊。

python_functions
一個(gè)或多個(gè)名稱(chēng)前綴或glob-patterns,用于確定哪些測(cè)試函數(shù)和方法被視為測(cè)試。通過(guò)在模式之間添加空格來(lái)搜索多個(gè)glob模式。默認(rèn)情況下,pytest會(huì)將任何前綴test為函數(shù)的函數(shù)視為測(cè)試。以下是如何收集以下結(jié)尾的測(cè)試函數(shù)和方法的示例_test

[pytest]
python_functions = *_test

請(qǐng)注意,這對(duì)生成在派生類(lèi)上的方法沒(méi)有影響,因?yàn)樽约旱募峡蚣苡糜谑占@些測(cè)試。unittest .TestCase``unittest
有關(guān)更多詳細(xì)示例,請(qǐng)參閱更改命名約定

testpaths
當(dāng)從rootdir目錄執(zhí)行pytest時(shí),如果在命令行中沒(méi)有給出特定的目錄,文件或測(cè)試ID,則設(shè)置應(yīng)搜索測(cè)試的目錄列表。當(dāng)所有項(xiàng)目測(cè)試都在一個(gè)已知位置以加速測(cè)試收集并避免意外接收不需要的測(cè)試時(shí)非常有用。

[pytest]
testpaths = testing doc

這告訴pytest只在 從根目錄執(zhí)行時(shí)查找testingdoc目錄中的測(cè)試。

usefixtures
將應(yīng)用于所有測(cè)試功能的燈具列表; 這在語(yǔ)義上與將@pytest.mark.usefixtures標(biāo)記應(yīng)用于所有測(cè)試函數(shù)相同。

[pytest]
usefixtures =
 clean_db

xfail_strict
如果設(shè)置為True,則標(biāo)記為@pytest.mark.xfail實(shí)際成功的測(cè)試將默認(rèn)為測(cè)試套件失敗。有關(guān)更多信息,請(qǐng)參閱strict參數(shù)

[pytest]
xfail_strict = True```

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容