python3+Pytest 接口自动化测试全方案设计与开发-No.2接口自动化框架编写-7-数据驱动之yaml数据驱动

yaml数据驱动

创建测试用例testlogin.yml

#登录测试用例
---
#测试用例名称
"case_name": "登录成功测试用例"
#url地址
"url": "/authorizations/"
#data
"data":
  username: "python"
  password: "12345678"
#期望结果
"expect":
  code: 200
  body: '"username": "python", "user_id": 1'

---
#测试用例名称
"case_name": "登录失败测试用例"
#url地址
"url": "/authorizations/"
#data
"data":
  username: "pyth"
  password: "12345678"
#期望结果
"expect":
  code: 400
  body: "non_field_errors"

 Conf.py定义路径

#定义data目录的路径
_data_path = BASE_DIR+os.sep+"data"
def get_data_path():
    return _data_path

编写测试用例

# -*- coding: utf-8 -*- 
# @Time : 2021/12/11 9:21 
# @Author : jeffky
# @File : test_login.py
import os
from utils.RequestsUtil import Request

import pytest
from config import Conf
from config.Conf import ConfigYaml
from utils.YamlUtil import YamlReader
from utils.AssertUtil import AssertUtil
#1、获取测试用例内容list
# 获取testlogin.yml文件路径


test_file = os.path.join(Conf.get_data_path(),'testlogin.yml')
# print(test_file)
# 使用工具类来读取多个文档内容
data_list = YamlReader(test_file).data_all()
# print(data_list)

conf_y = ConfigYaml()
url_path = conf_y .get_conf_url()

# 2、参数化执行测试用例
@pytest.mark.parametrize("login",data_list)
def test_yaml(login):
    # 初始化数据url、data
    url = url_path+login['url']
    data = login['data']
    #post请求
    request = Request()
    r = request.post(url, json=data)

    #打印结果
    print(r)
    # 断言
    code = r['code']
    AssertUtil().assert_code(code, login["expect"]['code'])
    body = r["body"]
    expected_body = login["expect"]['body']
    AssertUtil().assert_in_body(body, expected_body)
if __name__ == '__main__':
    pytest.main(["-s","test_login.py"])

猜你喜欢

转载自blog.csdn.net/python_jeff/article/details/121868758