柚子快報(bào)激活碼778899分享:pytest常用鉤子函數(shù)
柚子快報(bào)激活碼778899分享:pytest常用鉤子函數(shù)
1、什么叫鉤子函數(shù)
在Pytest框架中,鉤子函數(shù)是一種允許用戶擴(kuò)展或者自定義測試執(zhí)行過程的機(jī)制。鉤子函數(shù)允許用戶在測試的不同階段插入自定義的代碼,以實(shí)現(xiàn)特定的行為,操作或處理。這種插入式的機(jī)制使得Pytest具有高度的靈活性和擴(kuò)展性。
如下圖:
Pytest的鉤子函數(shù)遵循一定的命名規(guī)則,通常以"pytest"為前綴, 這些鉤子函數(shù)可以通過編寫對(duì)應(yīng)的函數(shù)并將其放在 conftest.py 文件中來實(shí)現(xiàn)。
pytest 中的鉤子函數(shù)按功能一共分為 6 類:引導(dǎo)鉤子,初始化鉤子、用例收集鉤子、用例執(zhí)行鉤子、報(bào)告鉤子、調(diào)試鉤子。
2、常用的鉤子函數(shù)
1、pytest_addoption(parser): 當(dāng) pytest 命令行解析器被創(chuàng)建時(shí),pytest 將調(diào)用這個(gè)函數(shù),它將接受一個(gè) parser 參數(shù),可以通過它向解析器中添加自定義的命令行選項(xiàng)。
2、pytest_configure(config): 當(dāng) pytest 執(zhí)行前首次讀取配置文件時(shí)調(diào)用,通常在這里可以對(duì)配置進(jìn)行修改。
3、pytest_unconfigure(config): 在 pytest 執(zhí)行完成并退出時(shí)調(diào)用。
4、pytest_generate_tests(metafunc): 當(dāng)pytest生成測試時(shí),pytest將調(diào)用此函數(shù)。這是一個(gè)非常有用的函數(shù),它可以幫助你動(dòng)態(tài)生成測試。
5、pytest_collection_modifyitems(session, config, items): 這個(gè)鉤子函數(shù)可以修改 pytest 的測試收集結(jié)果。你可以通過它添加、刪除或者修改 pytest 收集的測試。
6、pytest_runtest_setup(item): 在 pytest 執(zhí)行測試用例的 setup 階段時(shí)調(diào)用。可以在這里添加自定義的 setup 邏輯。
7、pytest_runtest_call(item): 當(dāng)測試用例被執(zhí)行時(shí),pytest 將調(diào)用此函數(shù)。在這個(gè)鉤子函數(shù)中可以添加自定義的邏輯
8、pytest_runtest_teardown(item): 在 pytest 執(zhí)行測試用例的 teardown 階段時(shí)調(diào)用??梢栽谶@里添加自定義的 teardown 邏輯。
9、pytest_runtest_makereport(item, call): 它在測試用例執(zhí)行完畢并生成測試報(bào)告時(shí)觸發(fā),可以在此處對(duì)測試結(jié)果進(jìn)行處理,通過實(shí)現(xiàn)該鉤子函數(shù)來對(duì)測試報(bào)告進(jìn)行定制化的處理,例如記錄測試用例的執(zhí)行結(jié)果、截圖等。
10、pytest_sessionstart(session): 在測試套件開始執(zhí)行前調(diào)用(也就是pytest進(jìn)程啟動(dòng)后,會(huì)調(diào)用此鉤子函數(shù)),可以在此處完成一些初始化操作。
11、pytest_sessionfinish(session, exitstatus): 在測試套件執(zhí)行結(jié)束后調(diào)用(也就是pytest進(jìn)程結(jié)束前,會(huì)調(diào)用此鉤子函數(shù),),可以在此鉤子函數(shù)中執(zhí)行清理操作或收集報(bào)告等。。
12、pytest_terminal_summary(terminalreporter): 在 pytest 執(zhí)行完成后調(diào)用,它將整個(gè)測試結(jié)果的總結(jié)輸出到終端上。
13、pytest_collection_finish(session): 當(dāng) pytest 集合測試結(jié)束時(shí)調(diào)用,可以在此處對(duì)測試用例進(jìn)行篩選。
14、pytest_collection_modifyitems(session, config, items): 當(dāng)測試用例收集完成后,會(huì)調(diào)用此鉤子函數(shù),可以通過此鉤子函數(shù)修改、重排序測試用例。
? ?? ? ?? ? ? 這些鉤子函數(shù)可以通過編寫對(duì)應(yīng)的函數(shù)并將其放在 conftest.py 文件中來實(shí)現(xiàn)。例如,如果想要在測試完成后發(fā)送一封郵件,可以在 conftest.py 文件中編寫一個(gè)名為 pytest_sessionfinish 的函數(shù),并在其中調(diào)用發(fā)送郵件的代碼。
# conftest.py
def pytest_sessionfinish(session, exitstatus):
# 根據(jù)測試結(jié)果執(zhí)行不同的操作
if exitstatus == 0:
# 測試通過時(shí)記錄日志
log_message = "測試通過,所有測試用例執(zhí)行成功。"
else:
# 測試失敗時(shí)記錄日志
log_message = "測試失敗,部分或全部測試用例執(zhí)行失敗。"
# 記錄日志
send_email(log_message)
# 模擬發(fā)送郵件的函數(shù)
def send_email(content):
print(f"發(fā)送郵件:{content}")
柚子快報(bào)激活碼778899分享:pytest常用鉤子函數(shù)
精彩文章
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。