目錄:
安裝及入門
使用和調(diào)用方法
原有TestSuite使用方法
斷言的編寫和報告
Pytest fixtures:清晰 模塊化 易擴(kuò)展
使用Marks標(biāo)記測試用例
Monkeypatching/對模塊和環(huán)境進(jìn)行Mock
使用tmp目錄和文件
捕獲stdout及stderr輸出
捕獲警告信息
模塊及測試文件中集成doctest測試
skip及xfail: 處理不能成功的測試用例
Fixture方法及測試用例的參數(shù)化
緩存: 使用跨執(zhí)行狀態(tài)
unittest.TestCase支持
運行Nose用例
經(jīng)典xUnit風(fēng)格的setup/teardown
安裝和使用插件
插件編寫
編寫鉤子(hook)方法
運行日志
API參考
方法(Functions)
標(biāo)記(Marks)
鉤子(Hooks)
裝置(Fixtures)
對象(Objects)
特殊變量(Special Variables)
環(huán)境變量(Environment Variables)
配置選項(Configuration Options)
優(yōu)質(zhì)集成實踐
片狀測試
Pytest導(dǎo)入機(jī)制及sys.path/PYTHONPATH
配置選項
示例及自定義技巧
Bash自動補(bǔ)全設(shè)置
API參考-Configuration Options
配置選項(Configuration Options)
配置選項
這里是一個可以在被寫入內(nèi)置的配置選項的列表pytest.ini,tox.ini或setup.cfg 通常位于版本庫的根文件。所有選項必須在一個[pytest]部分下([tool:pytest]對于setup.cfg文件)。
警告
的使用setup.cfg是不推薦,除非非常簡單的用例。.cfg 文件使用不同的解析器pytest.ini,tox.ini這可能導(dǎo)致難以追蹤問題。如果可能,建議使用后面的文件來保存pytest配置。
配置文件選項可以通過使用在命令行中覆蓋,-o/--override也可以多次傳遞。預(yù)期的格式是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
默認(rèn)是不添加選項。
cache_dir
設(shè)置存儲緩存插件內(nèi)容的目錄。默認(rèn)目錄是 .pytest_cache在rootdir中創(chuàng)建的。目錄可以是相對路徑或絕對路徑。如果設(shè)置相對路徑,則相對于rootdir創(chuàng)建目錄。另外,path可能包含將被擴(kuò)展的環(huán)境變量。有關(guān)緩存插件的更多信息,請參閱緩存:使用跨testrun狀態(tài)。
confcutdir
設(shè)置向上搜索conftest.py文件的目錄。默認(rèn)情況下,pytest將停止conftest.py從項目的pytest.ini/ tox.ini/ 向上搜索文件(setup.cfg如果有),或者直到文件系統(tǒng)根目錄。
console_output_style
運行測試時設(shè)置控制臺輸出樣式:
classic:經(jīng)典的pytest輸出。
progress:喜歡經(jīng)典的pytest輸出,但帶有進(jìn)度指示器。
count:像進(jìn)度一樣,但隨著測試完成次數(shù)而不是百分比顯示進(jìn)度。
默認(rèn)值為progress,但classic如果你愿意,或者新模式導(dǎo)致意外問題,你可以回退到:
# content of pytest.ini
[pytest]
console_output_style = classic
doctest_encoding
用于解碼帶有文檔字符串的文本文件的默認(rèn)編碼。 看看pytest如何處理doctests。
doctest_optionflags
標(biāo)準(zhǔn)doctest模塊中的一個或多個doctest標(biāo)志名稱。 看看pytest如何處理doctests。
empty_parameter_set_mark
允許在參數(shù)化中為空參數(shù)選擇操作
skip 使用空參數(shù)跳過測試(默認(rèn))
xfail 使用空參數(shù)標(biāo)記測試為xfail(run = False)
fail_at_collect 如果parametrize收集空參數(shù)集,則引發(fā)異常
# content of pytest.ini
[pytest]
empty_parameter_set_mark = xfail
注意
計劃xfail在將來的版本中更改此選項的默認(rèn)值,因為這被認(rèn)為不易出錯, 有關(guān)詳細(xì)信息,請參閱#3155。
filterwarnings
設(shè)置應(yīng)為匹配的警告采取的過濾器和操作的列表。默認(rèn)情況下,測試會話期間發(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格式兼容。這是默認(rèn)值。
xunit2:生成xunit 2.0樣式輸出,
哪個應(yīng)該與最新的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è)置應(yīng)為實時日志記錄捕獲的最小日志消息級別。可以使用整數(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除了活動的其他日志記錄工具之外,還應(yīng)設(shè)置相對于應(yīng)寫入日志消息的文件的文件名。
[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è)置應(yīng)為日志記錄文件捕獲的最小日志消息級別。可以使用整數(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è)置應(yīng)記錄捕獲的最小日志消息級別。可以使用整數(shù)值或級別的名稱。
[pytest]
log_level = INFO
有關(guān)更多信息,請參閱日志記錄。
log_print
如果設(shè)置為False,將禁用顯示失敗測試的捕獲日志消息。
[pytest]
log_print = False
有關(guān)更多信息,請參閱日志記錄。
markers
使用--strict命令行參數(shù)時,只允許使用已知的標(biāo)記(由代碼核心pytest或某些插件定義)。你可以在此設(shè)置中列出其他標(biāo)記,以將其添加到白名單。
你可以列出每行一個標(biāo)記名稱,從選項名稱縮進(jìn)。
[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樣式)模式應(yī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將嘗試通過激活腳本的存在智能地識別和忽略virtualenv。除非??collect?in?virtualenv給出,否則在測試收集期間不會考慮任何被視為虛擬環(huán)境根目錄的目錄。另請注意, norecursedirs優(yōu)先于??collect?in?virtualenv; 例如,如果你打算在virtualenv中使用匹配的基本目錄運行測試 ,則除了使用該標(biāo)志外, '.*'還必須覆蓋。norecursedirs``??collect?in?virtualenv
python_classes
一個或多個名稱前綴或glob樣式模式,用于確定考慮用于測試集合的類。通過在模式之間添加空格來搜索多個glob模式。默認(rèn)情況下,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
默認(rèn)情況下,匹配的文件test_*.py和*_test.py將被視為測試模塊。
python_functions
一個或多個名稱前綴或glob-patterns,用于確定哪些測試函數(shù)和方法被視為測試。通過在模式之間添加空格來搜索多個glob模式。默認(rèn)情況下,pytest會將任何前綴test為函數(shù)的函數(shù)視為測試。以下是如何收集以下結(jié)尾的測試函數(shù)和方法的示例_test:
[pytest]
python_functions = *_test
請注意,這對生成在派生類上的方法沒有影響,因為自己的集合框架用于收集這些測試。unittest .TestCase``unittest
有關(guān)更多詳細(xì)示例,請參閱更改命名約定。
testpaths
當(dāng)從rootdir目錄執(zhí)行pytest時,如果在命令行中沒有給出特定的目錄,文件或測試ID,則設(shè)置應(yīng)搜索測試的目錄列表。當(dāng)所有項目測試都在一個已知位置以加速測試收集并避免意外接收不需要的測試時非常有用。
[pytest]
testpaths = testing doc
這告訴pytest只在 從根目錄執(zhí)行時查找testing和doc目錄中的測試。
usefixtures
將應(yīng)用于所有測試功能的燈具列表; 這在語義上與將@pytest.mark.usefixtures標(biāo)記應(yīng)用于所有測試函數(shù)相同。
[pytest]
usefixtures =
clean_db
xfail_strict
如果設(shè)置為True,則標(biāo)記為@pytest.mark.xfail實際成功的測試將默認(rèn)為測試套件失敗。有關(guān)更多信息,請參閱strict參數(shù)。
[pytest]
xfail_strict = True```目錄:
安裝及入門
使用和調(diào)用方法
原有TestSuite使用方法
斷言的編寫和報告
Pytest fixtures:清晰 模塊化 易擴(kuò)展
使用Marks標(biāo)記測試用例
Monkeypatching/對模塊和環(huán)境進(jìn)行Mock
使用tmp目錄和文件
捕獲stdout及stderr輸出
捕獲警告信息
模塊及測試文件中集成doctest測試
skip及xfail: 處理不能成功的測試用例
Fixture方法及測試用例的參數(shù)化
緩存: 使用跨執(zhí)行狀態(tài)
unittest.TestCase支持
運行Nose用例
經(jīng)典xUnit風(fēng)格的setup/teardown
安裝和使用插件
插件編寫
編寫鉤子(hook)方法
運行日志
API參考
方法(Functions)
標(biāo)記(Marks)
鉤子(Hooks)
裝置(Fixtures)
對象(Objects)
特殊變量(Special Variables)
環(huán)境變量(Environment Variables)
配置選項(Configuration Options)
優(yōu)質(zhì)集成實踐
片狀測試
Pytest導(dǎo)入機(jī)制及sys.path/PYTHONPATH
配置選項
示例及自定義技巧
Bash自動補(bǔ)全設(shè)置
API參考-Configuration Options
配置選項(Configuration Options)
配置選項
這里是一個可以在被寫入內(nèi)置的配置選項的列表pytest.ini,tox.ini或setup.cfg 通常位于版本庫的根文件。所有選項必須在一個[pytest]部分下([tool:pytest]對于setup.cfg文件)。
警告
的使用setup.cfg是不推薦,除非非常簡單的用例。.cfg 文件使用不同的解析器pytest.ini,tox.ini這可能導(dǎo)致難以追蹤問題。如果可能,建議使用后面的文件來保存pytest配置。
配置文件選項可以通過使用在命令行中覆蓋,-o/--override也可以多次傳遞。預(yù)期的格式是name=value。例如:
pytest -o console_output_style=classic -o cache_dir=/tmp/mycache
addopts
將指定OPTS的命令行參數(shù)添加到命令行參數(shù)集中,就像它們已由用戶指定一樣。示例:如果你有此ini文件內(nèi)容:
# content of