打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
pytest + yaml 框架 -41.postman 和 python代码自动录制成yaml用例

前言

python代码 和postman 写的接口也能通过录制功能自动生成yaml格式用例了。

python 代码运行后自动录制

环境准备参考前面一篇https://www.cnblogs.com/yoyoketang/p/17495374.html

在项目本地新建一个recorde.py ,名称随便定义

from pytest_yaml_yoyo.mitm_http import RecoderHTTP
"""
步骤:1.pip 安装 mitmproxy 环境
> pip install mitmproxy
2.复制这里的代码,新建recorde.py 文件,设置过滤环境如:http://127.0.0.1:8001
3.启动服务
> mitmweb -s ./recorde.py -p 8099
4.电脑开启代理,设置对应端口
5.自动录制抓包转成 yaml 用例
"""

addons = [
RecoderHTTP(['http://httpbin.org']) # 设置过滤环境
]

本地 python 代码如下

import requests

url = "http://httpbin.org/post"
body = {
"user": "test",
"password": "123456"
}
r = requests.post(url, json=body)
print(r.text)

执行后会自动抓到对应接口,转成 test_post_post.yml 测试用例

config:
base_url: http://httpbin.org
post_post:
request:
method: POST
url: /post
headers:
Content-Type: application/json
json:
user: test
password: '123456'
validate:
- eq: [status_code, 200]
- eq: [headers."Content-Type", application/json]
- eq: [$.data, '{"user": "test", "password": "123456"}']
- eq: [$.origin, 183.193.25.125]
- eq: [$.url, http://httpbin.org/post]

postman 上接口也能抓取

如果你之前接口写在postman 上,想转成yaml 用例也很简单,只需执行对应的接口,就可以自动抓取转成yaml用例了.

常用的参数配置

RecoderHTTP 实例化时,可以设置以下几个参数

  • filter_host: 抓取的环境地址,可以是多个

  • ignore_cookies: 是否忽略掉cookies,默认False

  • save_base_url: 是否在 pytest.ini 保存全局base_url环境地址, 默认False

  • save_case_dir: 设置用例保存目录,默认cases

1.默认情况下,只需传一个参数,抓取的环境地址,可以是一个,也可以是多个

addons = [
RecoderHTTP(['http://httpbin.org'])
]

也可以抓取多个环境地址

addons = [
RecoderHTTP(['http://httpbin.org', 'https://www.baidu.com'])
]

2.ignore_cookies 是设置是否忽略cookies抓取,默认False

设置为True, 录制的yaml 用例中不会带上cookies

3.save_base_url是否在 pytest.ini 保存全局base_url环境地址, 默认False.
默认情况下,每个yaml 用例中在config 添加base_url 环境地址,兼容抓取多个环境的情况


如果只需抓一个环境的地址,设置全局base_url地址,设置save_base_url=True

addons = [
RecoderHTTP(['http://httpbin.org'], save_base_url=True)
]

抓取用例时会自动创建pytest.ini文件

[pytest]
log_cli = true
base_url = http://httpbin.org

yaml 用例中不带base_url了

post_post:
request:
method: POST
url: /post
headers:
Content-Type: application/json
json:
user: test
password: '123456'
validate:
- eq: [status_code, 200]
- eq: [headers."Content-Type", application/json]
- eq: [$.data, '{"user": "test", "password": "123456"}']
- eq: [$.origin, 183.193.25.125]
- eq: [$.url, http://httpbin.org/post]

4.save_case_dir 参数设置用例保存目录,yaml 用例默认保存目录cases

2023年第 15期《Python接口自动化+Playwright 》课程,6月24号开学(课程全面升级!)

2020年第三期《python接口自动化+测试开发》课程,4月5号开学(火热报名中!)

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
接口自动化框架对比 | 质量工程
Python 如何使用 HttpRunner 做接口自动化测试
Python Requests Pytest YAML Allure实现接口自动化
pytestx重新定义接口框架设计
[接口测试_B] 13 pytest+requests实战练习
python+pytest接口自动化之token关联登录的实现
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服