python3-API流量回放/锲约测试/自动化测试

这篇具有很好参考价值的文章主要介绍了python3-API流量回放/锲约测试/自动化测试。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

PPL-Tester

简介

http工具集,通过代理获取到API的请求与响应信息,将这些请求信息进行流量回放/锲约测试或快速生成用例, 亦可通过人工进行修改参数化提取、变量引用、断言等形成API自动化测试用例等!
你以为只是流量回放吗?错~走去瞧瞧v2版本!

看官~请记得给个star呗?
项目地址:

github
gitee


功能介绍

流程图 (简陋ing···)

流量回放测试,python3,python,测试工具,安全性测试
ps:
1、作者 Windows exe 运行,其它系统可自行打包或以 Python ppl x 执行.
2、运行程序需要在项目根目录下运行…

需要安装Python3环境及依赖库:

pip install -r requirements.txt

1、proxy http

command: ppl.exe f   (python ppl.py f)
    2023-01-20 10:39:53.628 | INFO     | __main__:cmd:37 - run:http flows cat. exit:Ctrl+C
    2023-01-20 10:39:53.642 | INFO     | utils.flows:cat_mock_load:25 - loaded mock*.json match to will mock!
    2023-01-20 10:39:53.644 | INFO     | utils.flows:__init__:114 - Proxy server listening at http://0.0.0.0:8888

流量回放测试,python3,python,测试工具,安全性测试
基本代理等使用请参阅博文:点击跳转

官方文档:https://docs.mitmproxy.org/stable

中文文档:https://ptorch.com/docs/10/mitmproxy_introduction


2、mock http response

可对 response 进行mock!

2.1 配置 config.ini

mock = ON
    mock ON :开启mock
    mock OFF:关闭mock
mode = ON
    mode ON :向远程服务器发送任何数据,且根据mock数据交集返回数据从而响应
    mode OFF:不向远程服务器发送任何数据

2.2 mock文件格式:mock*.json

2.3 随机参数引用格式:${faker}

结合 faker 的方法进行随机模式,文档请参考:https://faker.readthedocs.io/en/master/providers/faker.providers.python.html
mock demo:
{
  "api/user/info": {
    "bool": "${pybool}",
    "name": "${name}",
    "int": "${pyint}",
    "float": "${pyfloat(0,1)}",
    "data|1-3": [
      {
        "name": "${name}"
      }
    ]
  }
}

mock demo 输出
流量回放测试,python3,python,测试工具,安全性测试


3、http flows replace

request 正则替换支持替换(headers url body cookie)

replace = {"pattern":"value","pattern1":"value1"}
使用场景:
    1.鉴权:将 token 设置为空,如:
        replace = {"old token xxx":""}
    2.越权:将 token 设置为另用户token,越权又分为①水平越权(同角色)②垂直越权(向上级),如:
        replace = {"old token xxx":"new token xxx"}
    3.流量转发, 将test环境的前端去访问正式环境的数据(前端问题复现)
        {"old host":"new host"}
    PS:因前端本就发出 old host 请求,所以前端看到请求还是 old host 但真实是请求到 new host.

4、https证书过期检测

config.ini -> check_ssl hosts

check_ssl = app.xxx.com,web.xxx.com
command:
    ppl.exe s

5、api playback

5.1 接口用例集合获取

方式1:Fiddler

1、将项目下desc/fiddler.txt复制文本粘贴,FiddlerScript

2、更改为符合自己业务领域配置,是项目绝对路径app目录,注意要用两个扛\\
流量回放测试,python3,python,测试工具,安全性测试

方式2(推荐):mitmproxy

1、将项目下config.ini过滤域名改为自己需要配置的域名以及业务领域,如果填写db_url则流量信息直接入库
流量回放测试,python3,python,测试工具,安全性测试
2、需要配置代理证书等,详看mitmproxy使用文档

3、运行

command:
    ppl.exe f

流量回放测试,python3,python,测试工具,安全性测试

以上方式1及方式2 会得到txt文件 或直接入库

如果基于方式2(mitmproxy),配置db_url可直接流量入库回放测试.
流量回放测试,python3,python,测试工具,安全性测试
1、你会得到:./data/api-xxx.txt 或 fiddler-xxx.txt

2、如需要用例入库,则执行命令行:

ppl.exe --play=0

另外可能需要进行数据库连接配置./config.ini.db_url,默认为sqlite

mysql:db_url = mysql+pymysql://root:123456@127.0.0.1:3306/tester?charset=utf8

数据迁移:ppl.exe --move=new_db_url


5.2 执行测试

命令行参数说明(部分可在pytest.ini下默认配置),与pytest框架一致,并且新增以下参数:

  1. –env:查询业务领域=ppl及环境=test的用例

      如:--env=ppl,test   
    
  2. –param:附加将version参数替换为1或追加

      如(Windows):--param={\"version\":\"1\"}
    
  3. –file:读取app目录下所有txt文件进行流量回放,详细使用看流量回放

      如:--file=1
    
  4. –play:读取txt文件进行用例入库
    如:–play=0

      0:读取txt用例入库
      1:读取db用例进行回放测试
      2:读取txt文件流量回放
      3: 读取阿里云日志流量并入库
    
  5. –init:db表结构初始化,一般不需要用到
    如:–init=1

方式1:txt文件流量回放

ps:不支持下载/上传文件回放,不要将txt文件换行或格式变化哦(只回放API响应码为200)

  1)方式1:默认为app目录下全部txt文件(以下2-3不存在文件时亦是):pytest --file=1
  
  2)方式2:指定app目录下的文件:pytest --file=fiddler_2022-7-31.txt
  
  3)方式3:绝对路径指定文件(注意win下需要\\):pytest --file=E:\\fiddler_2022-7-31.txt
  
  4)方式4:相对路径指定文件:pytest --file=./fiddler_2022-7-31.txt
方式2:经过用例入库,执行db用例测试

需要先配置 pytest.ini(推荐) 或 config db在进行运行.

详情查看 5.6 db或pytest config说明.

配置pytest.ini,作用与db用例映射执行对应环境测试.
流量回放测试,python3,python,测试工具,安全性测试

ppl.exe --env=domain,env --param={\"version\":\"1\"}

ps:Windows可以生成allure报告:ppl.exe r (支持替换变量,存储变量,引用变量,响应断言)


5.3 后置处理器介绍:http_collect

参数提取器,默认是取第1个值(支持提取response与headers接口的返参)
Jsonpath语法请参考:https://goessner.net/articles/JsonPath

1.Jsonpath 区分大小写

1)获取key的值:['key'] ----> {'key':'value'}

2)获取key的值并重新命名:[{'key':'name'}] ----> {'name':'value'}

3)获取key的值并指定取第n个:['key':n] ----> {'key':values[n]}

4)获取key的值并重新命名及指定取第n个:['key':['name',n]] ----> {'name':values[n]}

5)原生Jsonpath语法:['$.data.key'] ----> {'key':'value'}

6)原生Jsonpath语法并重新命名:[{'$.data.key':'name'}] ----> {'name':'value'}

7)原生Jsonpath语法并指定取第n个:[{'$.data.key':n}] ----> {'key':values[n]}

8)原生Jsonpath语法并重新命名及指定取第n个:[{'$.data.key':['name',n]}] ----> {'name':values[n]}

2.正则表达式

1)获取正则表达式的值并命名为env:[{'re':['env','http://(.+?)/']}] ----> {'env':'value'}

2)获取正则表达式的值并命名为env及取第n个值:[{'re':['env','http://(.+?)/', -1]}] ----> {'name':'value'}


5.4 断言使用介绍:http_assert

1.Jsonpath 断言

1.字符在里面:[“msgId”]

  `实际为:assert "msgId" in response.text`

2.变量在里面:[“${msgId}”]

`实际为:assert "${msgId}" in response.text`

2.字符相等:[{“msgId”:“123456”}]

`实际为:assert 123456 == json_path(result.json(), 'msgId')`

3.字符在里面or其它:[{“msgId”:[“123456”,“in”]}] 注:in 可以是== != not in

  `assert 123456 in response.get('msgId')`

4.长度:1 == len(response.get(‘msgId’)):[{“msgId”:[1,“len”]}]

  `assert 1 == len(response.get('msgId'))`
2.正则表达式断言

1.直接写正则表达式即可,如:[{'re':'http://(.+?)/'}]


5.5 变量引用(参数化关联)

使用本系统且遵循Faker语法直接引用:${Faker语法}

ppl_开头,为自定义生成数据方法

Faker 更多请查阅官方文档:https://faker.readthedocs.io/en/stable/locales/zh_CN.html#faker-providers-address
流量回放测试,python3,python,测试工具,安全性测试
字段数据结构及解释,亦可查阅代码model:
流量回放测试,python3,python,测试工具,安全性测试

1.号码相关:

1)手机号:${phone_number}
18520149907

2)身份证号码:${ssn}
410622198603154708

2.时间日期相关

1)当前日期时间:${ppl_now_datetime}
2022-07-02 12:56:58

2)当前时间戳:${ppl_time}
1656737818

3)当前日期:${ppl_now_date}
2022-07-02

4)当前时间:${ppl_now_time}
12:56:58

5)过去7天的日期时间:${ppl_datetime(-7)}
2022-06-25 00:00:00

6)未来7天的日期时间:${ppl_datetime(7)}
2022-07-09 23:59:59

7)随机年-月-日:${date}
1996-03-20

8)随机(时:分:秒):${time}
04:52:23

9)未来的日期时间:${future_datetime(end_date=+7d)}
2022-07-07 16:01:23

10)过去的日期时间:${past_datetime(end_date=-7d)}
2022-06-29 13:29:20

3.名字相关:

1)姓名:${name}
王凯

2)姓名(女):${name_female}
戴丽丽

3)姓名(男):${name_male}
刘荣

4)姓:${last_name}

5)名字:${first_name}

4.地址相关

1)地址:${address}
香港特别行政区大冶县上街钟街k座 664713

2)省:${province}
河北省

3)市:${city}
长春县

4)地区:${district}
白云

5)街道地址:${street_address}
武汉街D座


5.6 db或pytest config说明

使用pytest.ini.tester配置 或 db config表配置,配置一种即可。
推荐使用pytest.ini

账号环境配置
1、pytest.ini 例子(需要压缩json,不可格式化)
    [test]
    tester = {"gray":"gray","Tester":[{"https://blog.csdn.net":{"url":"/qq_42675140","body":{},"method":"GET","collects":["ppl_cookie"]}},{"http://open-ppl-getaway.com":{"Authorization":"Bearer ","key":"nf9vMghQLyEZkeyxxxxx0ln9klsPz","secretx":"ylJhZzwvaa2NxxxsecretlDtNsJSyMh"}}],"filter_code":{},"filter_path":["/user/logout","/user/login"]}
      
  [test]:表示定义的环境 test,可以多个.
  tester:pytest 账号登录/过滤等配置
      1) gray:默认gray就好,一般用于AB测试模型则需要配置.
      2) Tester:登录获取token或cookie初始化,可配置多个登录信息
            collects:表示后置处理器 collect (使用详细查看第三点[后置处理器使用]),用例提取token或cookie作为登录态
      3) filter_code:过滤某些接口响应内容,可不写
      4) filter_path:过滤某些接口url,一般用于过滤登录及退出登录以免执行测试时影响登录态

2、db config如下例子, 直接复制粘贴保存即可(可格式化):
{
    "gray":"gray",
    "Tester":[
        {
            "https://app-xxx.com":{
                "url":"/api/user/login",
                "json":{
                    "mobile":18888888888,
                    "Password":"mVs6NwvIFRgN0aaUo4KZOiW9QZWbKZjqVX1eW9Gr2s4rgZ5atS3ppY39ZlyE37Tb2/zo6YWJV6VJV="
                },
                "method":"POST",
                "collects":[
                    "clienttoken"
                ]
            }
        },
        {
            "https://web-xxx.com":{
                "url":"/api/index.php?r=data/login",
                "data":"user=admin&password=4076f862096d1536b6cac6866e386655=",
                "method":"POST",
                "headers":{
                    "content-Type":"application/x-www-form-urlencoded"
                },
                "collects":[
                    "ppl_cookie"
                ]
            }
        }
    ],
    "filter_code":{
        "$response_key":[
            200,
            "200"
        ]
    },
    "filter_path":[
        "/api/user/logout",
        "/api/user/login"
    ]
}

5.7 mysql等断言

待开发文章来源地址https://www.toymoban.com/news/detail-759790.html

6、web页面管理用例等

待开发

7、flows客户端,集成以上功能…

待开发

如有建议/疑问请联系我:https://blog.csdn.net/qq_42675140

到了这里,关于python3-API流量回放/锲约测试/自动化测试的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ubuntu 18.04 配置自动化测试工具 appium + selenium+python3

    sudo add-apt-repository ppa:danielrichter2007/grub-customizer sudo apt-get update sudo apt-get install grub-customizer sudo apt-get install openjdk-8-jdk ================================================================================ 【已经安装Android studio 可以跳过】 下载SDK =============================== 配置环境变量 【配置环境变量

    2024年02月03日
    浏览(96)
  • 浏览器常用基本操作之python3+selenium4自动化测试(基础篇)

    1、打开指定的网页地址 我们使用selenium进行自动化测试时,打开浏览器之后,第一步就是让浏览器访问我们指定的地址,可使用get方法实现 1 2 3 from selenium import webdriver driver = webdriver.Edge() driver.get( \\\'https://www.baidu.com/\\\' )   # 本行用于访问指定的地址 2、获取当前页面url 我们在

    2024年02月01日
    浏览(71)
  • 微信小程序自动化测试实战,支持录制回放、智能遍历

      ​为了满足小程序性能、功能等方面的测试需求,微信团队上线 小程序云测服务 ,提供丰富的自动化测试能力。其中 智能化 Monkey 服务 凭借着零代码、低成本的优势吸引不少开发者使用。 在服务使用过程中,我们发现开发者有更多的进阶需求: 先完成指定操作,例如登

    2024年02月03日
    浏览(47)
  • 基于python实现Web自动化测试(selenium)、API自动化测试(requests)&附学习视频

    另一篇文章 :自动化测试框架(pytest)附学习视频 学习视频,学习文档-白月黑羽 说明: 1紧跟着写的不加/,不加空格-表示同一级别信息,加空格表示后代 2.css定位tag,id,class时分别有不同的标识,其他属性都要加[]进行搜索, Xpath所有属性都要都加【】,tag不用 3. css在使用ta

    2024年02月03日
    浏览(102)
  • 《最新出炉》系列初窥篇-Python+Playwright自动化测试-2-playwright的API及其他知识

    上一篇宏哥已经将Python+Playwright的环境搭建好了,而且也简单的演示了一下三款浏览器的启动和关闭,是不是很简单啊。今天主要是把一篇的中的代码进行一次详细的注释,然后说一下playwright的API和其他相关知识点。那么首先将上一篇中的代码进行一下详细的解释。 2.1创建浏

    2024年02月07日
    浏览(38)
  • 十款开源测试开发工具推荐(自动化、性能、混沌测试、造数据、流量复制)

    在本篇文章中,我将给大家推荐 10 款日常工作中经常用到的测试开发工具神器,涵盖了自动化测试、性能压测、流量复制、混沌测试、造数据等。 AutoMeter 是一款针对分布式服务,微服务 API 做功能和性能一体化的自动化测试平台,一站式提供发布单元,API,环境,用例,前

    2024年02月15日
    浏览(57)
  • gor工具http流量复制、流量回放,生产运维生气

     gor是一款流量复制回放工具,gor工具的官网:https://goreplay.org/ 1、对某个端口的http流量进行打印  2、对流量实时转发,把81端口流量转发到192.168.3.221:80端口 3、把抓取到的流量以文件的形式存储到磁盘上 4、对抓取到的流量进行回放 5、快速开一个静态服务器 6、gor的运行参

    2024年02月12日
    浏览(42)
  • 【墙裂推荐!】十款开源测试开发工具(自动化、性能、造数据、流量复制)​

    目录 1、AutoMeter-API 自动化测试平台 2、QA Wolf 浏览器自动化测试工具 3、Mimesis 用于 Python 的高性能虚假数据生成器 4、Ddosify 高性能负载测试工具 5、AutoCannon HTTP/1.1 基准测试工具 6、Sharingan 流量录制回放工具 7、randdata 随机测试数据生成工具 8、DrissionPage WEB 自动化测试集成工具

    2024年02月06日
    浏览(52)
  • python调用海康视频汇聚平台API,获得所有摄像头设备编号、实时播放rtsp地址、回放rtsp地址

    1. 需求 海康视频汇聚平台(综合安防管理平台(iSecure Center)V2.1.0)的openAPI的demo均为c++/java代码,官方没有python代码。 需通过汇聚平台获得所有摄像头的设备编号,利用设备编号获得摄像头IP地址和rtsp地址。 2. 思路 根据海康开放平台官方文档《资源中心综合安防管理平台(

    2024年02月10日
    浏览(59)
  • API自动化测试是什么?我们该如何做API自动化测试呢?

     API测试已成为日常的测试任务之一,为了提高测试效率,减少重复的手工操作,API自动化测试也逐渐变得愈加重要,本文是自己在API自动化测试方面的一些经验积累和心得、汇总成文,以飨读者 我相信自动化技能已经成为高级测试工程师总体技能的标配。敏捷和持续测试破

    2024年02月01日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包