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

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 文件中可以支持多个用例, 用例可以是一个步骤也可以是多个步骤。

  1. config:

  2. name: demo

  3. test_1:

  4. name: 用例1

  5. print: hello 11111

  6. 用例是多个步骤2:

  7. -

  8. name: get

  9. request:

  10. method: GET

  11. url: http://httpbin.org/get

  12. validate:

  13. - eq: [status_code, 200]

  14. -

  15. name: post

  16. request:

  17. method: POST

  18. url: http://httpbin.org/post

  19. json:

  20. username: test

  21. password: "123456"

  22. validate:

  23. - eq: [status_code, 200]

用例分层

API 层只做接口的描述,一般放到项目根目录api目录下

api/login.yaml 示例

  1. name: post

  2. request:

  3. method: POST

  4. url: http://httpbin.org/post

  5. json:

  6. username: ${username}

  7. password: "123456"

  8. validate:

  9. - eq: [status_code, 200]

用例层通过api 关键字导入需要的API,导入的路径是相对路径,需根据项目的根目录去导入。
如果执行过程中代码无法识别哪个是项目根目录,最好在项目的根目录下放一个pytest.ini 文件,pytest会以pytest.ini 文件所在的目录为项目根目录。
比如我的项目结构是这样的

  1. ├─api

  2. └─ login.yml

  3. ├─testcase

  4. └─ test_login.yml

  5. └─conftest.py

  6. └─pytest.ini

那么不管用例文件test_*.yml在哪个目录,都是以项目根目录去导入API 的yaml文件

  1. config:

  2. name: login case

  3. base_url: http://127.0.0.0:1

  4. variables:

  5. username: "test123"

  6. password: "123456"

  7. test_case:

  8. -

  9. name: step login1

  10. api: api/login.yml

  11. extract:

  12. url: body.url

  13. validate:

  14. - eq: [status_code, 200]

  15. - eq: [ok, true]

  16. -

  17. name: step login2

  18. api: api/login.yml

运行用例是在项目根目录去执行 pytest 运行

pytest testcase

行动吧,在路上总比一直观望的要好,未来的你肯定会感 谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入扣群: 320231853,里面有各种软件测试+开发资料和技术可以一起交流学习哦。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值