Pytest官方教程-22-API參考-Configuration Options

目錄:

  1. 安裝及入門
  2. 使用和調(diào)用方法
  3. 原有TestSuite使用方法
  4. 斷言的編寫和報告
  5. Pytest fixtures:清晰 模塊化 易擴展
  6. 使用Marks標記測試用例
  7. Monkeypatching/對模塊和環(huán)境進行Mock
  8. 使用tmp目錄和文件
  9. 捕獲stdout及stderr輸出
  10. 捕獲警告信息
  11. 模塊及測試文件中集成doctest測試
  12. skip及xfail: 處理不能成功的測試用例
  13. Fixture方法及測試用例的參數(shù)化
  14. 緩存: 使用跨執(zhí)行狀態(tài)
  15. unittest.TestCase支持
  16. 運行Nose用例
  17. 經(jīng)典xUnit風格的setup/teardown
  18. 安裝和使用插件
  19. 插件編寫
  20. 編寫鉤子(hook)方法
  21. 運行日志
  22. API參考
    1. 方法(Functions)
    2. 標記(Marks)
    3. 鉤子(Hooks)
    4. 裝置(Fixtures)
    5. 對象(Objects)
    6. 特殊變量(Special Variables)
    7. 環(huán)境變量(Environment Variables)
    8. 配置選項(Configuration Options)
  23. 優(yōu)質(zhì)集成實踐
  24. 片狀測試
  25. Pytest導入機制及sys.path/PYTHONPATH
  26. 配置選項
  27. 示例及自定義技巧
  28. Bash自動補全設(shè)置

API參考-Configuration Options

配置選項

這里是一個可以在被寫入內(nèi)置的配置選項的列表pytest.ini片排,tox.inisetup.cfg 通常位于版本庫的根文件醇份。所有選項必須在一個[pytest]部分下([tool:pytest]對于setup.cfg文件)。
警告
的使用setup.cfg是不推薦,除非非常簡單的用例禁添。.cfg 文件使用不同的解析器pytest.initox.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_cacherootdir中創(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í)行時查找testingdoc目錄中的測試。

usefixtures
將應用于所有測試功能的燈具列表; 這在語義上與將@pytest.mark.usefixtures標記應用于所有測試函數(shù)相同去件。

[pytest]
usefixtures =
 clean_db

xfail_strict
如果設(shè)置為True坡椒,則標記為@pytest.mark.xfail實際成功的測試將默認為測試套件失敗扰路。有關(guān)更多信息,請參閱strict參數(shù)倔叼。

[pytest]
xfail_strict = True```

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末汗唱,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子丈攒,更是在濱河造成了極大的恐慌哩罪,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件巡验,死亡現(xiàn)場離奇詭異际插,居然都是意外死亡,警方通過查閱死者的電腦和手機显设,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進店門框弛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人捕捂,你說我怎么就攤上這事瑟枫。” “怎么了绞蹦?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵力奋,是天一觀的道長。 經(jīng)常有香客問我幽七,道長景殷,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任澡屡,我火速辦了婚禮猿挚,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘驶鹉。我一直安慰自己绩蜻,他們只是感情好,可當我...
    茶點故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布室埋。 她就那樣靜靜地躺著办绝,像睡著了一般。 火紅的嫁衣襯著肌膚如雪姚淆。 梳的紋絲不亂的頭發(fā)上孕蝉,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天,我揣著相機與錄音腌逢,去河邊找鬼降淮。 笑死,一個胖子當著我的面吹牛搏讶,可吹牛的內(nèi)容都是我干的佳鳖。 我是一名探鬼主播霍殴,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼系吩!你這毒婦竟也來了来庭?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤淑玫,失蹤者是張志新(化名)和其女友劉穎巾腕,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體絮蒿,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡尊搬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了土涝。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片佛寿。...
    茶點故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖但壮,靈堂內(nèi)的尸體忽然破棺而出冀泻,到底是詐尸還是另有隱情,我是刑警寧澤蜡饵,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布弹渔,位于F島的核電站,受9級特大地震影響溯祸,放射性物質(zhì)發(fā)生泄漏肢专。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一焦辅、第九天 我趴在偏房一處隱蔽的房頂上張望博杖。 院中可真熱鬧,春花似錦筷登、人聲如沸剃根。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽狈醉。三九已至,卻和暖如春惠险,著一層夾襖步出監(jiān)牢的瞬間舔糖,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工莺匠, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人十兢。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓趣竣,卻偏偏與公主長得像摇庙,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子遥缕,可洞房花燭夜當晚...
    茶點故事閱讀 44,592評論 2 353

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