前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >pytest + yaml 框架 -41.postman 和 python代码自动录制成yaml用例

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

作者头像
上海-悠悠
发布2023-08-22 11:46:55
2320
发布2023-08-22 11:46:55
举报
文章被收录于专栏:从零开始学自动化测试

前言

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

python 代码运行后自动录制

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

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

代码语言:javascript
复制
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 代码如下

代码语言:javascript
复制
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 测试用例

代码语言:javascript
复制
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.默认情况下,只需传一个参数,抓取的环境地址,可以是一个,也可以是多个

代码语言:javascript
复制
addons = [
    RecoderHTTP(['http://httpbin.org'])
]

也可以抓取多个环境地址

代码语言:javascript
复制
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

代码语言:javascript
复制
addons = [
    RecoderHTTP(['http://httpbin.org'], save_base_url=True)
]

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

代码语言:javascript
复制
[pytest]
log_cli = true
base_url = http://httpbin.org

yaml 用例中不带base_url了

代码语言:javascript
复制
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-06-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 从零开始学自动化测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • python 代码运行后自动录制
  • postman 上接口也能抓取
  • 常用的参数配置
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档