# 查詢yaml檔案 並返回def read_yaml(yaml_name):
'''讀取yaml,將yaml反序列化,就是把yaml格式轉換成dict格式
:return:
'''try:
yaml_file = "../tests/test_case/" + yaml_name
with open(yaml_file, encoding="utf-8") as f:
value = yaml.load(f, loader=yaml.fullloader) # 檔案流,載入方式
return value
except exception as e:
yaml_file = "./tests/test_case/" + yaml_name
with open(yaml_file, encoding="utf-8") as f:
value = yaml.load(f, loader=yaml.fullloader) # 檔案流,載入方式
return value
import pytestfrom fixtures.fixture_your_name import read_yaml, ys, cmp
from tep.client import request
from loguru import logger
import time
import decimal
import json
import allure
@allure.description("""簡介:此執行集只做除錯使用""")class test_examine(object):
yaml_data = read_yaml("test_all_examine.yaml") # 獲取測試集檔案內容
@allure.description_html("""
""")
@pytest.mark.flaky(reruns=3, reruns_delay=3) # 失敗重試 每3秒重試一次,共重試3次
@pytest.mark.parametrize('yaml_case', yaml_data) # 資料驅動,讀取用例執行集yaml檔案中的列表,
@allure.title('審核模組')
def test_examine(self, yaml_case, env_vars, config):
api = ys(yaml_case, "url")[0] # ys 只是封裝了乙個 jsonpath 查詢的公共方法
method = ys(yaml_case, "method")[0]
params = ys(yaml_case, "params")[0]
apinam = ys(yaml_case, "name")[0] # 介面名稱
headers = ys(yaml_case, "headers")[0]
url = env_vars.domain + api # 完整url
logger.info("當前請求用例:%s,url:%s,請求方法:%s,params:%s,headers:%s"%(apinam, url, method, params, headers))
# 起始時間
start = time.process_time()
# 介面請求
response = request(method, url=url, headers=headers, json=params)
# 請求結束時間
end = time.process_time()
# 介面耗時
elapsed = str(decimal.decimal("%.3f" % float(end - start))) + "s"
logger.info(' 介面:%s,*************** 執行耗時:%s ***************' % (url, elapsed))
ret = response.json() # 獲取介面json 型別響應:ret
case_id = str(ys(yaml_case, 'case_id')[0]) # 用例唯一c ase idcheck_field = read_yaml(ys(yaml_case, "expected_result")[0]) # yaml用例需要校驗id
# 取出 當前用例需要校驗的json響應:chek_data
chek_data = none
for check in check_field:
if check.get(case_id):
chek_data = check.get(case_id)
break
# 開始校驗
for r in ret:
print('-'*50 )
check_response = cmp(json.dumps(chek_data), json.dumps(r))
if check_response == 0:
print('當前校驗json包含在響應列表中。'*10)
if __name__ == '__main__':
pytest.main(["-s", "-v", "examine_test.py"])
# pytest --tep-reports 生成測試報告
自動化測試工具
二 如何實施自動化測試 自動化測試指軟體測試的自動化,在預設狀態下執行應用程式或者系統預設條件包括正常和異常,最後評估執行結果。將人為驅動的測試行為轉化為機器執行的過程。自動化測試框架一般可以分為兩個層次,上層是管理整個自動化測試的開發,執行以及維護,在比較龐大的專案中,它體現重要的作用,它可以管理...
自動化測試工具monkey
monkey是android中的乙個命令列工具,可以執行在模擬器裡或實際裝置中。它向系統傳送偽隨機的使用者事件流 如按鍵輸入 觸控螢幕輸入 手勢輸入等 實現對正在開發的應用程式進行壓力測試。monkey測試是一種為了測試軟體的穩定性 健壯性的快速有效的方法。a 測試的物件僅為應用程式包,有一定的侷限...
自動化測試工具分析
目前在國內使用的最多的自動化測試工具就是qtp,以至於許多人錯誤的理解為自動化測試就是使用qtp進行一下錄製,然後就是自動化測試了,這種理解是有偏差的。qtp 是hp公司開發的乙個款自動化測試工具,名氣很大,但是售價也非常昂貴,國內有一些牛人破解了qtp,進行使用,但是大公司一般不會採用這種方式,要...