Python接口自动化测试的学习笔记4——使用YAML文件进行数据驱动

上篇文件已经简单介绍了requests的使用方法,本文将深入探讨如何在Python接口自动化测试中采用YAML文件进行数据驱动设计,以提高测试用例的可维护性和复用性。

1、引言

数据驱动测试是一种流行的测试策略,其核心在于将测试逻辑与测试数据分离,使得测试逻辑可以独立于具体的数据集运行。YAML作为一种直观、易于阅读的数据序列化格式,非常适合用来存储和管理接口自动化测试所需的复杂数据结构。

2、YAML文件驱动测试数据

我们可以采用YAML文件来存储和加载接口测试的各种场景数据,YAML文件的结构清晰,易于编写和理解【 关于YAML文件的数据格式要求请参考:http://t.csdnimg.cn/KVB1j】。例如:我们可以在data目录下创建一个login.yml文件,用于存放登录接口的测试数据

代码如下:

-
  name: 登录
  request:
    url: 'http://xxx/auth/login'
    method: post
    headers:
      Content-Type: application/json
    json: {
      "username": "xxx",
      "password": "xxx"
    }
  validate: Null

3、封装读取YAML文件方法

接下来,我们可以使用PyYAML库解析这些YAML文件并执行测试,现在我们在common目录下创建个yaml_util.py文件,用于封装读取yml文件的方法,代码如下:

注意:此处需要安装PyYAML库

import os
import yaml


class YamlUtil:

    # 读取data下的yml用例文件
    def read_testcases_yaml(self, yaml_name):
        with open(os.getcwd() + "./data/" + yaml_name, mode='r', encoding='utf-8') as f:
            value = yaml.load(stream=f, Loader=yaml.FullLoader)
            return value

4、实现数据驱动

最后,我们稍微改动下test_login.py的代码,先使用@pytest.mark.parametrize参数化用例数据,再用case_info来接收login.yml的测试用例数据,然后分别获取请求地址、请求方式、请求参数的值进行请求:

import pytest
import requests

from common.yaml_util import YamlUtil


class TestLogin:
    @pytest.mark.parametrize('case_info', YamlUtil().read_testcases_yaml('login.yml'))
    def test_login(self, case_info):
        print('case_info:', case_info)
        url = case_info['request']['url']
        method = case_info['request']['method']
        json = case_info['request']['json']
        # requests.request请求
        res = requests.request(url=url, method=method, json=json)
        # 获取返回结果数据,文本格式接收
        response = res.text
        # 打印返回结果到控制台
        print('返回结果:', response)

请求结果:

5、执行多条用例

上面我们在login.yml文件中已经写好了一条用例,现在我们只要再多复制一条并修改下参数值就可以了,执行后就可以看到已经多了一条测试结果,示例如下:

执行结果:

因为这里没有做断言处理,所以两次执行都是通过的,这是正常结果。

6、总结

通过在Python接口自动化测试中引入YAML文件进行数据驱动,不仅使测试用例的组织和维护变得更加简洁和灵活,而且方便团队成员理解和协作。此外,由于YAML支持嵌套结构,对于包含多个层级或复杂参数的接口测试尤为适用。在实际项目中,可以进一步扩展此方案,加入更丰富的断言逻辑,以及详尽的日志记录和错误报告机制,以提升测试的质量和效率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值