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

前言

python代码 和postman 写的接口也能通过录制功能自动生成yaml格式用例了。
备注:从v1.2.4 以后新版本不再公开,新功能内部 VIP 学员可以使用,公开版本仅解决bug, 不提供新功能了。

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

网易云完整视频课程https://study.163.com/course/courseMain.htm?courseId=1213419817&share=2&shareId=480000002230338
报名咨询wx:283340479 (已报名的同学学习过程中有问题,都可以协助解决)

posted @ 2023-06-25 11:44  上海-悠悠  阅读(344)  评论(0编辑  收藏  举报