#!/usr/bin/env python
# -*- encoding: utf-8 -*-
'''
@File : testcase_001.py
@Time : 2021/06/20 12:07:09
@Author : 软件质量保障
@wechat : ISTE1024
@Email : byteflow@163.com
@Blog : https://www.zhihu.com/people/iloverain1024
@Copyright : 侵权必究
'''
import pytest
import yaml
# 用例重载
def data_reload(request, data_key):
data = request[data_key]
method = data["method"]
url = data["path"]
headers = data["headers"]
body = data["body"]
return method, url, headers, body
# 用例集读取
def get_test_data(test_data_path):
case = [] # 存储测试用例名称
http = [] # 存储请求对象
expected = [] # 存储预期结果
data = yaml.safe_load(open(test_data_path, encoding='utf-8'))
# test = data['tests']
for td in data:
case.append(td.get('case', ''))
http.append(td.get('http', {}))
expected.append(td.get('expected', {}))
parameters = zip(case, http, expected)
return list(parameters)
@pytest.mark.parametrize("case, http, expected", get_test_data('testcases/data/TEST_DATA_002.yaml'))
def test_main(case, http, expected, login):
# 数据准备,这块可以再单独封装一层
method, url, headers, body = data_reload(http, 'query')
# 发起请求
query_res = login.httpcore(method, url=url, headers=headers, data=body)
print(query_res.json())
# 传统断言方式:提取响应结果数据与预期结果比较
assert query_res.json()['code'] == expected['response']['code']
assert query_res.json()['data']['total'] == expected['response']['total']
assert query_res.json()['data']['list'][2]['answer_id'] == expected['response']['answer_id']