python

目錄:

安裝及入門

使用和調(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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市险绘,隨后出現(xiàn)的幾起案子踢京,更是在濱河造成了極大的恐慌誉碴,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,482評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瓣距,死亡現(xiàn)場(chǎng)離奇詭異黔帕,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)旨涝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門蹬屹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人白华,你說我怎么就攤上這事跪但《灰铮” “怎么了蚓土?”我有些...
    開封第一講書人閱讀 152,762評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵赏酥,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我管搪,道長(zhǎng)虾攻,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,273評(píng)論 1 279
  • 正文 為了忘掉前任更鲁,我火速辦了婚禮霎箍,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘澡为。我一直安慰自己漂坏,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,289評(píng)論 5 373
  • 文/花漫 我一把揭開白布媒至。 她就那樣靜靜地躺著顶别,像睡著了一般。 火紅的嫁衣襯著肌膚如雪拒啰。 梳的紋絲不亂的頭發(fā)上驯绎,一...
    開封第一講書人閱讀 49,046評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音谋旦,去河邊找鬼剩失。 笑死,一個(gè)胖子當(dāng)著我的面吹牛册着,可吹牛的內(nèi)容都是我干的拴孤。 我是一名探鬼主播,決...
    沈念sama閱讀 38,351評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼指蚜,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼乞巧!你這毒婦竟也來了涨椒?” 一聲冷哼從身側(cè)響起摊鸡,我...
    開封第一講書人閱讀 36,988評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤绽媒,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后免猾,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體是辕,經(jīng)...
    沈念sama閱讀 43,476評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,948評(píng)論 2 324
  • 正文 我和宋清朗相戀三年猎提,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了获三。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,064評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡锨苏,死狀恐怖疙教,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情伞租,我是刑警寧澤贞谓,帶...
    沈念sama閱讀 33,712評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站葵诈,受9級(jí)特大地震影響裸弦,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜作喘,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,261評(píng)論 3 307
  • 文/蒙蒙 一理疙、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧泞坦,春花似錦窖贤、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至李根,卻和暖如春槽奕,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背房轿。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工粤攒, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人囱持。 一個(gè)月前我還...
    沈念sama閱讀 45,511評(píng)論 2 354
  • 正文 我出身青樓夯接,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親纷妆。 傳聞我的和親對(duì)象是個(gè)殘疾皇子盔几,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,802評(píng)論 2 345

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

  • Pytest 是一個(gè)比較成熟且功能完備的 Python 測(cè)試框架。其提供完善的在線文檔掩幢,并有著大量的第三方插件和內(nèi)...
    派派森森閱讀 4,358評(píng)論 0 12
  • 模塊和包 一 模塊 1 什么是模塊? 常見的場(chǎng)景:一個(gè)模塊就是一個(gè)包含了python定義和聲明的文件芯丧,文件名就是...
    go以恒閱讀 2,261評(píng)論 0 4
  • 目錄: 安裝及入門 使用和調(diào)用方法 原有TestSuite使用方法 斷言的編寫和報(bào)告 Pytest fixture...
    韓志超閱讀 1,476評(píng)論 0 0
  • ORA-00001: 違反唯一約束條件 (.) 錯(cuò)誤說明:當(dāng)在唯一索引所對(duì)應(yīng)的列上鍵入重復(fù)值時(shí)芍阎,會(huì)觸發(fā)此異常。 O...
    我想起個(gè)好名字閱讀 5,176評(píng)論 0 9
  • 目錄: 安裝及入門 使用和調(diào)用方法 原有TestSuite使用方法 斷言的編寫和報(bào)告 Pytest fixture...
    琉璃_233a閱讀 165評(píng)論 0 0