httprunner+jenkins+git+allure

 好久沒寫了,這段時(shí)間接觸的東西有點(diǎn)瑣碎,加上比較懶,一直拖到現(xiàn)在,弄了httprunner有半個(gè)月了,漸漸有點(diǎn)眉目,暫時(shí)記錄下。
image.png

代碼結(jié)構(gòu)上,分用例執(zhí)行層,testcase
通用請(qǐng)求管理層api
數(shù)據(jù)庫查詢相關(guān)service
配置項(xiàng)config


image.png

用例執(zhí)行層按照業(yè)務(wù)模塊功能劃分


image.png

在單個(gè)用例上,保持統(tǒng)一規(guī)范,包含描述信息

! /usr/bin/env python3

--coding:utf-8 --

"""

File : case_volume_backup_image_volumes_del_test.py.py

Time :2021/6/3 10:34

Author :xxx

version :python 3.7

Description:此處可以關(guān)聯(lián)禪道的用例,或者jira

"""


image.png

整個(gè)的請(qǐng)求代碼類似,包含變量配置,基礎(chǔ)url的獲取,然后是測試步驟,測試步驟包含call的調(diào)用,然后當(dāng)前用例關(guān)鍵步驟的調(diào)用。調(diào)用的具體請(qǐng)求放置api中,方便后續(xù)多場景功能下串聯(lián)。


image.png
image.png

整體過程還算中規(guī)中矩,這里主要說明里面teardown_hook的使用場景和實(shí)現(xiàn),之所以引用teardown_hook是因?yàn)橛|發(fā)接口請(qǐng)求時(shí)候,有些接口狀態(tài)只是單純的請(qǐng)求,至于是否能否成功,還需要從數(shù)據(jù)庫里面對(duì)應(yīng)的某些字段狀態(tài)進(jìn)行查詢,所以做了一個(gè)驗(yàn)證。讓用例執(zhí)行結(jié)果更真實(shí)性。
.teardown_hook("{query_volume_fromid_wait(volume_id, status, available)}")
拿這句來講,暴露給用例層,主要是查詢數(shù)據(jù)庫里面的接口層返回字段特征值的的一個(gè)狀態(tài),如果這個(gè)狀態(tài)為available,那么就是可用。

image.png

對(duì)于里面的調(diào)用關(guān)系,如下圖

image.png

從單獨(dú)的view層進(jìn)行定義,def query_volume_fromid_wait(querysource, querykey, expectkey, defaulttime=3600):
query_db_status(querysource, querykey, expectkey, query_volid_status, defaulttime=defaulttime)
里面包含對(duì)數(shù)據(jù)庫中接口功能對(duì)應(yīng)表的查詢,和具體的查詢語句,以及具體數(shù)據(jù)庫查詢的輸出


image.png

query_db_status主要是動(dòng)態(tài)查詢功能-db_tool_public.py中


image.png

query_volid_status是具體的表里面的功能查詢--放到單獨(dú)業(yè)查詢數(shù)據(jù)庫中
image.png
image.png

def query_volid_status(id):
ret = query_table_id_status(CinderVolume, id)
return ret
針對(duì)里面的查詢的狀態(tài)query_table_id_status,-db_tool_public.py中


image.png

def query_table_id_status(tableobj, id):
print(tableobj)
print(id)
row_datas = tableobj.select().where(tableobj.id == id).order_by(tableobj.updated_at.desc())
print(row_datas)
ret = exchange_bulk(row_datas)
return ret
里面的exchange_bulk規(guī)劃在util中,作為查詢數(shù)據(jù)庫的一個(gè)通用的規(guī)范


image.png

具體的數(shù)據(jù)庫連接信息從配置文件中獲取,方便后續(xù)環(huán)境維護(hù)
image.png

[圖片上傳中...(image.png-66213b-1623746892425-0)]

可以從本地調(diào)試運(yùn)行
hrun -s -v xxx.py


image.png

注意:
用例名稱必須_test結(jié)尾


image.png

git的保存
image.png

可用進(jìn)行簡單維護(hù)

git status ---檢測跟git上代碼差異
git add xxx---增加代碼
git commit -m "xxx"--添加備注
git pull origin master
git push origin master----提交
配置Jenkins,填寫git地址,以及git賬號(hào)和密碼



image.png

對(duì)其基礎(chǔ)環(huán)境進(jìn)行部署和安裝
因?yàn)镴enkins里面已經(jīng)集成了allure,所以當(dāng)httprunner里面不需要再次執(zhí)行allure generate report
image.png

報(bào)告是這樣的,
image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1、ValueError: Incompatible indexer with Series 一般是datafra...
    Rainysong閱讀 15,032評(píng)論 0 8
  • 為什么學(xué)習(xí)Python? 通過什么途徑學(xué)習(xí)的Python? 上網(wǎng)收集視頻,資料 關(guān)注公證號(hào) 買教程,書籍 Pyth...
    130920閱讀 1,418評(píng)論 0 0
  • HttpRunner接口自動(dòng)化測試框架 發(fā)表于2018-08-05|分類于接口自動(dòng)化測試[https://sutu...
    木木三_5227閱讀 1,675評(píng)論 0 5
  • restframework restframework簡介 它是基于Django的,幫助我們快速開發(fā)符合restf...
    DayBreakL閱讀 882評(píng)論 0 2
  • 我是黑夜里大雨紛飛的人啊 1 “又到一年六月,有人笑有人哭,有人歡樂有人憂愁,有人驚喜有人失落,有的覺得收獲滿滿有...
    陌忘宇閱讀 8,896評(píng)論 28 54

友情鏈接更多精彩內(nèi)容