pytest + yaml 框架 -7.用例分层机制

絕刀狂花
发布: 2025-07-03 08:16:35
原创
337人浏览过

前言

在测试流程类接口时,我们常常需要反复调用同一个接口,这时可以考虑复用API。在代码中,可以将API写成函数进行调用。而在yaml文件中,我们可以将单个API定义在一个yaml文件中,并让测试用例调用这个导入的API。

安装插件

通过pip安装pytest-yaml-yoyo插件。

pip install pytest-yaml-yoyo
登录后复制

用例分层功能在v1.0.5版本中实现。

用例分层分为两层:API层和测试用例层。

API层:描述接口的请求,可以包含基本的验证。 测试用例层:多个步骤按顺序引用API。

pytest + yaml 框架 -7.用例分层机制

API层示例

API层仅用于描述接口,一般存放在项目根目录下的api文件夹中。

api/login.yaml示例

name: post
request:
    method: POST
    url: http://httpbin.org/post
    json:
        username: ${username}
        password: "123456"
validate:
    - eq: [status_code, 200]
登录后复制

需要注意的是,API层不能单独运行,因为它只是用例的一部分。用例执行需要使用test_*.yml命名。

测试用例层

测试用例层通过api关键字导入所需的API,导入路径为相对路径,需根据项目根目录导入。如果代码无法识别项目根目录,建议在项目根目录下放置一个pytest.ini文件,pytest会以pytest.ini文件所在的目录为项目根目录。以下是项目结构示例:

├─api
   └─ login.yml
├─testcase
   └─ test_login.yml
└─conftest.py
└─pytest.ini
登录后复制

无论test_*.yml文件位于哪个目录,都会从项目根目录导入API的yaml文件。

config:
    name: login case
    base_url: http://124.70.221.221:8201
    variables:
        username: "test123"
        password: "123456"
teststeps:
-    name: step login1
    api: api/login.yml
    extract:
        url:  body.url
    validate:
        - eq: [status_code, 200]
        - eq: [ok, true]
-    name: step login2
    api: api/login.yml
登录后复制

运行用例时,也需在项目根目录执行pytest命令。

pytest testcase
登录后复制

关于变量

API层可以引用变量,这些变量的值从用例目录的variables加载,目前仅支持在config中设置用例全局变量。

config:
    name: login case
    base_url: http://124.70.221.221:8201
    variables:
        username: "test123"
        password: "123456"
登录后复制

可以将API理解为用例的一个步骤,是用例的一部分,导入后相当于将请求复制到用例步骤中。

关于校验

在API层可以编写一些基础的校验,如状态码校验,但不应在API层编写业务逻辑校验。业务逻辑校验应在用例层进行。

-    name: step login1
    api: api/login.yml
    extract:
        url:  body.url
    validate:
        - eq: [status_code, 200]
        - eq: [ok, true]
登录后复制

如果API层和用例层都有验证,最后会合并到一起进行校验。

以上就是pytest + yaml 框架 -7.用例分层机制的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号