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

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

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

在單個(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
"""

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


整體過程還算中規(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("volume_id, status, available)}")
拿這句來講,暴露給用例層,主要是查詢數(shù)據(jù)庫里面的接口層返回字段特征值的的一個(gè)狀態(tài),如果這個(gè)狀態(tài)為available,那么就是可用。

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

從單獨(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ù)庫查詢的輸出

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

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


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中

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ī)范

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

[圖片上傳中...(image.png-66213b-1623746892425-0)]
可以從本地調(diào)試運(yùn)行
hrun -s -v xxx.py

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

git的保存

可用進(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)和密碼


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

報(bào)告是這樣的,
