目錄:
安裝及入門
使用和調(diào)用方法
原有TestSuite使用方法
斷言的編寫和報(bào)告
Pytest fixtures:清晰 模塊化 易擴(kuò)展
使用Marks標(biāo)記測(cè)試用例
Monkeypatching/對(duì)模塊和環(huán)境進(jìn)行Mock
使用tmp目錄和文件
捕獲stdout及stderr輸出
捕獲警告信息
模塊及測(cè)試文件中集成doctest測(cè)試
skip及xfail: 處理不能成功的測(cè)試用例
Fixture方法及測(cè)試用例的參數(shù)化
緩存: 使用跨執(zhí)行狀態(tài)
unittest.TestCase支持
運(yùn)行Nose用例
經(jīng)典xUnit風(fēng)格的setup/teardown
安裝和使用插件
插件編寫
編寫鉤子(hook)方法
運(yùn)行日志
API參考
方法(Functions)
標(biāo)記(Marks)
鉤子(Hooks)
裝置(Fixtures)
對(duì)象(Objects)
特殊變量(Special Variables)
環(huán)境變量(Environment Variables)
配置選項(xiàng)(Configuration Options)
優(yōu)質(zhì)集成實(shí)踐
片狀測(cè)試
Pytest導(dǎo)入機(jī)制及sys.path/PYTHONPATH
配置選項(xiàng)
示例及自定義技巧
Bash自動(dòng)補(bǔ)全設(shè)置
API參考-Configuration Options
配置選項(xiàng)(Configuration Options)
配置選項(xiàng)
這里是一個(gè)可以在被寫入內(nèi)置的配置選項(xiàng)的列表pytest.ini,tox.ini或setup.cfg 通常位于版本庫(kù)的根文件慎式。所有選項(xiàng)必須在一個(gè)[pytest]部分下([tool:pytest]對(duì)于setup.cfg文件)伶氢。
警告
的使用setup.cfg是不推薦,除非非常簡(jiǎn)單的用例瘪吏。.cfg 文件使用不同的解析器pytest.ini癣防,tox.ini這可能導(dǎo)致難以追蹤問題。如果可能掌眠,建議使用后面的文件來保存pytest配置蕾盯。
配置文件選項(xiàng)可以通過使用在命令行中覆蓋,-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ā)行實(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_cache在rootdir中創(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)致意外問題模软,你可以回退到:
# 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)志名稱燃异。 看看pytest如何處理doctests底靠。
empty_parameter_set_mark
允許在參數(shù)化中為空參數(shù)選擇操作
skip 使用空參數(shù)跳過測(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在將來的版本中更改此選項(xiàng)的默認(rèn)值特铝,因?yàn)檫@被認(rèn)為不易出錯(cuò), 有關(guān)詳細(xì)信息壹瘟,請(qǐng)參閱#3155鲫剿。
filterwarnings
設(shè)置應(yīng)為匹配的警告采取的過濾器和操作的列表。默認(rèn)情況下稻轨,測(cè)試會(huì)話期間發(fā)出的所有警告都將在測(cè)試會(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)的名稱舟舒,可以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í)別的名稱床佳。
[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)寫入日志消息的文件的文件名。
[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í)別的名稱。
[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í)別的名稱踱葛。
[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)記名稱,從選項(xià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)用于目錄的基本名稱格郁,以決定是否遞歸到目錄腹殿。模式匹配字符:
*? ? ? 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將嘗試通過激活腳本的存在智能地識(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è)名稱前綴或glob樣式模式,用于確定考慮用于測(cè)試集合的類厨埋。通過在模式之間添加空格來搜索多個(gè)glob模式。默認(rèn)情況下捐顷,pytest會(huì)將任何以前綴Test為前綴的類視為測(cè)試集合荡陷。以下是如何從以下結(jié)尾的類中收集測(cè)試的示例Suite:
[pytest]
python_classes = *Suite
請(qǐng)注意,unittest.TestCase無論此選項(xiàng)如何迅涮,始終都會(huì)收集派生類废赞,因?yàn)閡nittest自己的集合框架用于收集這些測(cè)試。
python_files
一個(gè)或多個(gè)Glob樣式的文件模式叮姑,用于確定哪些python文件被視為測(cè)試模塊唉地。通過在模式之間添加空格來搜索多個(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è)名稱前綴或glob-patterns耘沼,用于確定哪些測(cè)試函數(shù)和方法被視為測(cè)試极颓。通過在模式之間添加空格來搜索多個(gè)glob模式。默認(rèn)情況下群嗤,pytest會(huì)將任何前綴test為函數(shù)的函數(shù)視為測(cè)試菠隆。以下是如何收集以下結(jié)尾的測(cè)試函數(shù)和方法的示例_test:
[pytest]
python_functions = *_test
請(qǐng)注意,這對(duì)生成在派生類上的方法沒有影響狂秘,因?yàn)樽约旱募峡蚣苡糜谑占@些測(cè)試骇径。unittest .TestCase``unittest
有關(guān)更多詳細(xì)示例,請(qǐng)參閱更改命名約定者春。
testpaths
當(dāng)從rootdir目錄執(zhí)行pytest時(shí)破衔,如果在命令行中沒有給出特定的目錄,文件或測(cè)試ID钱烟,則設(shè)置應(yīng)搜索測(cè)試的目錄列表晰筛。當(dāng)所有項(xiàng)目測(cè)試都在一個(gè)已知位置以加速測(cè)試收集并避免意外接收不需要的測(cè)試時(shí)非常有用。
[pytest]
testpaths = testing doc
這告訴pytest只在 從根目錄執(zhí)行時(shí)查找testing和doc目錄中的測(cè)試忠售。
usefixtures
將應(yīng)用于所有測(cè)試功能的燈具列表; 這在語義上與將@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```目錄:
安裝及入門
使用和調(diào)用方法
原有TestSuite使用方法
斷言的編寫和報(bào)告
Pytest fixtures:清晰 模塊化 易擴(kuò)展
使用Marks標(biāo)記測(cè)試用例
Monkeypatching/對(duì)模塊和環(huán)境進(jìn)行Mock
使用tmp目錄和文件
捕獲stdout及stderr輸出
捕獲警告信息
模塊及測(cè)試文件中集成doctest測(cè)試
skip及xfail: 處理不能成功的測(cè)試用例
Fixture方法及測(cè)試用例的參數(shù)化
緩存: 使用跨執(zhí)行狀態(tài)
unittest.TestCase支持
運(yùn)行Nose用例
經(jīng)典xUnit風(fēng)格的setup/teardown
安裝和使用插件
插件編寫
編寫鉤子(hook)方法
運(yùn)行日志
API參考
方法(Functions)
標(biāo)記(Marks)
鉤子(Hooks)
裝置(Fixtures)
對(duì)象(Objects)
特殊變量(Special Variables)
環(huán)境變量(Environment Variables)
配置選項(xiàng)(Configuration Options)
優(yōu)質(zhì)集成實(shí)踐
片狀測(cè)試
Pytest導(dǎo)入機(jī)制及sys.path/PYTHONPATH
配置選項(xiàng)
示例及自定義技巧
Bash自動(dòng)補(bǔ)全設(shè)置
API參考-Configuration Options
配置選項(xiàng)(Configuration Options)
配置選項(xiàng)
這里是一個(gè)可以在被寫入內(nèi)置的配置選項(xiàng)的列表pytest.ini泰佳,tox.ini或setup.cfg 通常位于版本庫(kù)的根文件盼砍。所有選項(xiàng)必須在一個(gè)[pytest]部分下([tool:pytest]對(duì)于setup.cfg文件)。
警告
的使用setup.cfg是不推薦逝她,除非非常簡(jiǎn)單的用例浇坐。.cfg 文件使用不同的解析器pytest.ini,tox.ini這可能導(dǎo)致難以追蹤問題黔宛。如果可能近刘,建議使用后面的文件來保存pytest配置。
配置文件選項(xiàng)可以通過使用在命令行中覆蓋臀晃,-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