文章中示例源碼獲取地址:https://github.com/wmm0165/auditcenter_190912git
1.yaml格式介紹github
基本格式
k: v(:後必須有空格)
減號-表示列表 - desc: 機構列表 api: /api/v1/zoneForReport method: get data: - test1 - test2 params: keyword: null headers: Content-Type: application/json assert_code: 200 等價於: [{'desc': '機構列表', 'api': '/api/v1/zoneForReport', 'method': 'get', 'data': ['test1', 'test2'], 'params': {'keyword': None}, 'headers': {'Content-Type': 'application/json'}, 'assert_code': 200}]
-分隔多個測試用例 - desc: 機構列表 api: /api/v1/zoneForReport method: get data: - test1 - test2 params: keyword: null headers: Content-Type: application/json assert_code: 200 - desc: 門診科室列表 api: /api/v1/deptForReport method: get data: null params: type: 1 keyword: null headers: Content-Type: application/json assert_code: 200 等價於: [{'desc': '機構列表', 'api': '/api/v1/zoneForReport', 'method': 'get', 'data': ['test1', 'test2'], 'params': {'keyword': None}, 'headers': {'Content-Type': 'application/json'}, 'assert_code': 200}, {'desc': '門診科室列表', 'api': '/api/v1/deptForReport', 'method': 'get', 'data': None, 'params': {'type': 1, 'keyword': None}, 'headers': {'Content-Type': 'application/json'}, 'assert_code': 200}]
2.讀取yaml文件json
import yaml import os from config.config import YAML_PATH class HandleYaml: def __init__(self): pass def read_yaml(self, filename): with open(os.path.join(YAML_PATH, filename), 'r', encoding='utf8') as f: file_content = yaml.load(f, Loader=yaml.FullLoader) datas = [tuple(i.values())[1::] for i in file_content] print(file_content) return datas
3.使用pytest進行數據驅動api
import pytest from common.request import HttpRequest from common.handle_yaml import HandleYaml requ = HttpRequest() hy = HandleYaml() datas = hy.read_yaml('auditcenter.yaml') print(datas) auditcenter_url = 'http://10.1.1.89:9999/auditcenter' @pytest.mark.parametrize("api,method,data,params,headers,assert_code", datas) def test_single_api(api, method, data, params, headers, assert_code): res = requ.req(auditcenter_url + api, method, data, params, headers) assert res.json()['code'] == str(assert_code)