pytest + yaml 框架 - yaml 用例规范与全部关键字总结

2322 篇文章 2 订阅
2188 篇文章 14 订阅

v1.4.4 版本新增对yaml 用例格式校验,不合法的用例格式不会被执行,避免出现用例格式不合法导致的报错。

全部关键字总结

config 中可用关键字

关键字可支持类型功能说明
name可选 str没什么用,仅描述当前yaml 用例的名称
base_url可选 str, 支持格式:http://、https://、ws://、wss://当前yaml用例公共环境地址
variables可选 dict声明当前yaml文件公共变量
fixtures可选,str or list 支持格式: “xx”, “xx,yy” , [“xxx”, “yyy”]当前yaml文件公共fixtures
parameters可选,dict or list or 引用外部文件模块级别参数化
allure可选,dict 描述用例allure报告当前yaml文件公共allure描述
mark可选,str or list 支持格式: “xx”, “xx,yy” , [“xxx”, “yyy”]当前yaml文件每个用例加mark标记
hooks可选,dict 格式:{"request": ["x"], "response": ["y"]}当前yaml文件每个用例都加钩子
export可选,str or list 支持格式: “xx”, “xx,yy” , [“xxx”, “yyy”]变量提升全局,跨yaml文件引用

用例中可使用的关键字

关键字可支持类型功能说明
name可选 str用例步骤描述,在allure报告中体现
variables可选 dict声明当前用例局部变量
fixtures可选,str or list 支持格式: “xx”, “xx,yy” , [“xxx”, “yyy”]当前用例调用的fixtures
parameters可选,dict or list or $p{}引用外部文件或外部数据当前用例级别参数化
allure可选,dict 描述用例allure报告当前用例allure报告描述
mark可选,str or list 支持格式: “xx”, “xx,yy” , [“xxx”, “yyy”]当前用例加mark标记
print可选,str打印内容
sleep可选,int or floatsleep 休眠时间
skip可选,str跳过用例,添加描述
skipif可选,str表达式为真跳过用例
request可选,dict发送http请求参数
api可选,str用例分层,引用api层
extract可选,dict提取结果
validate可选, List[dict]校验结果
export可选,str or list 支持格式: “xx”, “xx,yy” , [“xxx”, “yyy”]变量提升全局,跨yaml文件引用


websoket 协议2个关键字

关键字可支持类型功能说明
ws可选 dict连接服务参数
send可选 str or dict发送消息内容

API 层接口描述关键字,只有3个

关键字可支持类型功能说明
name可选 str用例步骤描述,在allure报告中体现
request可选,dict发送http请求参数
validate可选, List[dict]校验结果

yaml 用例格式规范

一个yaml 文件中可以支持多个用例, 用例可以是一个步骤也可以是多个步骤。

config:
    name: demo

test_1:
    name: 用例1
    print: hello 11111

用例是多个步骤2:
-
    name: get
    request:
        method: GET
        url: http://httpbin.org/get
    validate:
      - eq: [status_code, 200]

-
    name: post
    request:
        method: POST
        url: http://httpbin.org/post
        json:
          username: test
          password: "123456"
    validate:
      - eq: [status_code, 200]

用例分层

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 关键字导入需要的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://127.0.0.0:1
    variables:
        username: "test123"
        password: "123456"

test_case:
-
    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

最后:下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保100%免费】

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值