python

目錄:

安裝及入門

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,983評論 6 537
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,772評論 3 422
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,947評論 0 381
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,201評論 1 315
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 71,960評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,350評論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,406評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,549評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,104評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 40,914評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,089評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,647評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,340評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,753評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,007評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,834評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 48,106評論 2 375

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

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