目錄:
- 安裝及入門
- 使用和調(diào)用方法
- 原有TestSuite使用方法
- 斷言的編寫和報告
- Pytest fixtures:清晰 模塊化 易擴展
- 使用Marks標記測試用例
- Monkeypatching/對模塊和環(huán)境進行Mock
- 使用tmp目錄和文件
- 捕獲stdout及stderr輸出
- 捕獲警告信息
- 模塊及測試文件中集成doctest測試
- skip及xfail: 處理不能成功的測試用例
- Fixture方法及測試用例的參數(shù)化
- 緩存: 使用跨執(zhí)行狀態(tài)
- unittest.TestCase支持
- 運行Nose用例
- 經(jīng)典xUnit風格的setup/teardown
- 安裝和使用插件
- 插件編寫
- 編寫鉤子(hook)方法
- 運行日志
- API參考
- 優(yōu)質(zhì)集成實踐
- 片狀測試
- Pytest導入機制及sys.path/PYTHONPATH
- 配置選項
- 示例及自定義技巧
- Bash自動補全設(shè)置
API參考-Configuration Options
配置選項
這里是一個可以在被寫入內(nèi)置的配置選項的列表pytest.ini
片排,tox.ini
或setup.cfg
通常位于版本庫的根文件醇份。所有選項必須在一個[pytest]
部分下([tool:pytest]
對于setup.cfg
文件)。
警告
的使用setup.cfg
是不推薦,除非非常簡單的用例禁添。.cfg
文件使用不同的解析器pytest.ini
,tox.ini
這可能導致難以追蹤問題嘉裤。如果可能槐瑞,建議使用后面的文件來保存pytest配置。
配置文件選項可以通過使用在命令行中覆蓋崎页,-o/--override
也可以多次傳遞鞠绰。預期的格式是name=value
。例如:
pytest -o console_output_style=classic -o cache_dir=/tmp/mycache
addopts
將指定OPTS
的命令行參數(shù)添加到命令行參數(shù)集中飒焦,就像它們已由用戶指定一樣蜈膨。示例:如果你有此ini文件內(nèi)容:
# content of pytest.ini
[pytest]
addopts = --maxfail=2 -rf # exit after 2 failures, report fail info
發(fā)行實際意味著:pytest test_hello.py
pytest --maxfail=2 -rf test_hello.py
默認是不添加選項。
cache_dir
設(shè)置存儲緩存插件內(nèi)容的目錄牺荠。默認目錄是 .pytest_cache
在rootdir中創(chuàng)建的翁巍。目錄可以是相對路徑或絕對路徑。如果設(shè)置相對路徑休雌,則相對于rootdir創(chuàng)建目錄灶壶。另外,path可能包含將被擴展的環(huán)境變量杈曲。有關(guān)緩存插件的更多信息驰凛,請參閱緩存:使用跨testrun狀態(tài)。
confcutdir
設(shè)置向上搜索conftest.py
文件的目錄担扑。默認情況下恰响,pytest將停止conftest.py
從項目的pytest.ini
/ tox.ini
/ 向上搜索文件(setup.cfg
如果有),或者直到文件系統(tǒng)根目錄涌献。
console_output_style
運行測試時設(shè)置控制臺輸出樣式:
-
classic
:經(jīng)典的pytest輸出胚宦。 -
progress
:喜歡經(jīng)典的pytest輸出,但帶有進度指示器洁奈。 -
count
:像進度一樣间唉,但隨著測試完成次數(shù)而不是百分比顯示進度。
默認值為progress
利术,但classic
如果你愿意呈野,或者新模式導致意外問題,你可以回退到:
# content of pytest.ini
[pytest]
console_output_style = classic
doctest_encoding
用于解碼帶有文檔字符串的文本文件的默認編碼印叁。 看看pytest如何處理doctests被冒。
doctest_optionflags
標準doctest
模塊中的一個或多個doctest標志名稱军掂。 看看pytest如何處理doctests。
empty_parameter_set_mark
允許在參數(shù)化中為空參數(shù)選擇操作
-
skip
使用空參數(shù)跳過測試(默認) -
xfail
使用空參數(shù)標記測試為xfail(run = False) -
fail_at_collect
如果parametrize收集空參數(shù)集昨悼,則引發(fā)異常
# content of pytest.ini
[pytest]
empty_parameter_set_mark = xfail
注意
計劃xfail
在將來的版本中更改此選項的默認值蝗锥,因為這被認為不易出錯, 有關(guān)詳細信息率触,請參閱#3155终议。
filterwarnings
設(shè)置應為匹配的警告采取的過濾器和操作的列表。默認情況下葱蝗,測試會話期間發(fā)出的所有警告都將在測試會話結(jié)束時顯示在摘要中穴张。
# content of pytest.ini
[pytest]
filterwarnings =
error
ignore::DeprecationWarning
這告訴pytest忽略棄用警告并將所有其他警告變?yōu)殄e誤。有關(guān)更多信息两曼,請參閱警告捕獲皂甘。
junit_family
版本4.2中的新功能。
配置生成的JUnit XML文件的格式悼凑〕フ恚可能的選擇是:
-
xunit1
(或legacy
):生成舊樣式輸出,與xunit 1.0格式兼容户辫。這是默認值渐夸。 -
xunit2
:生成xunit 2.0樣式輸出,
哪個應該與最新的Jenkins版本更兼容寸莫。
[pytest]
junit_family = xunit2
junit_suite_name
要設(shè)置根測試套件xml項的名稱捺萌,可以junit_suite_name
在配置文件中配置該選項:
[pytest]
junit_suite_name = my_suite
log_cli_date_format
設(shè)置一個time.strftime()
兼容的字符串,該字符串將在格式化實時日志記錄的日期時使用膘茎。
[pytest]
log_cli_date_format = %Y-%m-%d %H:%M:%S
有關(guān)更多信息,請參閱實時日志酷誓。
log_cli_format
設(shè)置logging
用于格式化實時日志記錄消息的兼容字符串披坏。
[pytest]
log_cli_format = %(asctime)s %(levelname)s %(message)s
有關(guān)更多信息,請參閱實時日志盐数。
log_cli_level
設(shè)置應為實時日志記錄捕獲的最小日志消息級別棒拂。可以使用整數(shù)值或級別的名稱玫氢。
[pytest]
log_cli_level = INFO
有關(guān)更多信息帚屉,請參閱實時日志。
log_date_format
設(shè)置time.strftime()
與日志記錄捕獲格式化日期時將使用的兼容字符串漾峡。
[pytest]
log_date_format = %Y-%m-%d %H:%M:%S
有關(guān)更多信息攻旦,請參閱日志記錄。
log_file
pytest.ini
除了活動的其他日志記錄工具之外生逸,還應設(shè)置相對于應寫入日志消息的文件的文件名牢屋。
[pytest]
log_file = logs/pytest-logs.txt
有關(guān)更多信息且预,請參閱日志記錄。
log_file_date_format
設(shè)置time.strftime()
在格式化日志文件的日期時將使用的兼容字符串烙无。
[pytest]
log_file_date_format = %Y-%m-%d %H:%M:%S
有關(guān)更多信息锋谐,請參閱日志記錄。
log_file_format
設(shè)置一個logging
兼容的字符串截酷,用于格式化重定向到日志文件的日志消息涮拗。
[pytest]
log_file_format = %(asctime)s %(levelname)s %(message)s
有關(guān)更多信息,請參閱日志記錄迂苛。
log_file_level
設(shè)置應為日志記錄文件捕獲的最小日志消息級別三热。可以使用整數(shù)值或級別的名稱灾部。
[pytest]
log_file_level = INFO
有關(guān)更多信息康铭,請參閱日志記錄。
log_format
設(shè)置logging
用于格式化捕獲的日志消息的兼容字符串赌髓。
[pytest]
log_format = %(asctime)s %(levelname)s %(message)s
有關(guān)更多信息从藤,請參閱日志記錄。
log_level
設(shè)置應記錄捕獲的最小日志消息級別锁蠕∫囊埃可以使用整數(shù)值或級別的名稱。
[pytest]
log_level = INFO
有關(guān)更多信息荣倾,請參閱日志記錄悯搔。
log_print
如果設(shè)置為False
,將禁用顯示失敗測試的捕獲日志消息舌仍。
[pytest]
log_print = False
有關(guān)更多信息妒貌,請參閱日志記錄。
markers
使用--strict
命令行參數(shù)時铸豁,只允許使用已知的標記(由代碼核心pytest或某些插件定義)灌曙。你可以在此設(shè)置中列出其他標記,以將其添加到白名單节芥。
你可以列出每行一個標記名稱在刺,從選項名稱縮進。
[pytest]
markers =
slow
serial
minversion
指定運行測試所需的最小pytest版本头镊。
# content of pytest.ini
[pytest]
minversion = 3.0 # will fail if we run with pytest-2.8
norecursedirs
設(shè)置目錄basename模式以避免在遞歸測試發(fā)現(xiàn)時使用蚣驼。各個(fnmatch樣式)模式應用于目錄的基本名稱,以決定是否遞歸到目錄相艇。模式匹配字符:
* matches everything
? matches any single character
[seq] matches any character in seq
[!seq] matches any char not in seq
默認模式是颖杏。設(shè)置替換默認值。以下是如何避免某些目錄的示例:'.*', 'build', 'dist','CVS', '_darcs', '{arch}', '*.egg', 'venv'``norecursedirs
[pytest]
norecursedirs = .svn _build tmp*
這將告訴pytest
我們不要查看典型的subversion或sphinx-build目錄或任何tmp
前綴目錄厂捞。
此外输玷,pytest
將嘗試通過激活腳本的存在智能地識別和忽略virtualenv队丝。除非??collect?in?virtualenv
給出,否則在測試收集期間不會考慮任何被視為虛擬環(huán)境根目錄的目錄欲鹏。另請注意机久, norecursedirs
優(yōu)先于??collect?in?virtualenv
; 例如,如果你打算在virtualenv中使用匹配的基本目錄運行測試 赔嚎,則除了使用該標志外膘盖, '.*'
還必須覆蓋。norecursedirs``??collect?in?virtualenv
python_classes
一個或多個名稱前綴或glob樣式模式尤误,用于確定考慮用于測試集合的類侠畔。通過在模式之間添加空格來搜索多個glob模式。默認情況下损晤,pytest會將任何以前綴Test
為前綴的類視為測試集合软棺。以下是如何從以下結(jié)尾的類中收集測試的示例Suite
:
[pytest]
python_classes = *Suite
請注意,unittest.TestCase
無論此選項如何尤勋,始終都會收集派生類喘落,因為unittest
自己的集合框架用于收集這些測試。
python_files
一個或多個Glob樣式的文件模式最冰,用于確定哪些python文件被視為測試模塊瘦棋。通過在模式之間添加空格來搜索多個glob模式:
[pytest]
python_files = test_*.py check_*.py example_*.py
或者每行一個:
[pytest]
python_files =
test_*.py
check_*.py
example_*.py
默認情況下,匹配的文件test_*.py
和*_test.py
將被視為測試模塊暖哨。
python_functions
一個或多個名稱前綴或glob-patterns赌朋,用于確定哪些測試函數(shù)和方法被視為測試。通過在模式之間添加空格來搜索多個glob模式篇裁。默認情況下沛慢,pytest會將任何前綴test
為函數(shù)的函數(shù)視為測試。以下是如何收集以下結(jié)尾的測試函數(shù)和方法的示例_test
:
[pytest]
python_functions = *_test
請注意达布,這對生成在派生類上的方法沒有影響颠焦,因為自己的集合框架用于收集這些測試。unittest .TestCase``unittest
有關(guān)更多詳細示例往枣,請參閱更改命名約定。
testpaths
當從rootdir目錄執(zhí)行pytest時粉渠,如果在命令行中沒有給出特定的目錄分冈,文件或測試ID,則設(shè)置應搜索測試的目錄列表霸株。當所有項目測試都在一個已知位置以加速測試收集并避免意外接收不需要的測試時非常有用雕沉。
[pytest]
testpaths = testing doc
這告訴pytest只在 從根目錄執(zhí)行時查找testing
和doc
目錄中的測試。
usefixtures
將應用于所有測試功能的燈具列表; 這在語義上與將@pytest.mark.usefixtures
標記應用于所有測試函數(shù)相同去件。
[pytest]
usefixtures =
clean_db
xfail_strict
如果設(shè)置為True
坡椒,則標記為@pytest.mark.xfail
實際成功的測試將默認為測試套件失敗扰路。有關(guān)更多信息,請參閱strict參數(shù)倔叼。
[pytest]
xfail_strict = True```