Swagger Codegen JMeter测试数据模板

Sum*_*ngi 6 jmeter swagger openapi swagger-codegen

我从一个swagger定义生成Jmeter的jmx文件,生成的JMX和测试数据CSV看起来很无用,它没有关于API期望的参数信息,没有响应映射信息的http状态代码等.

您可以获取任何定义文件,以重现此:

  1. 转到http://editor.swagger.io/#/
  2. 从文件菜单中打开任何示例
  3. 从generate client菜单中,单击Jmeter

我期望的是具有API的整个框架的JMX,以便QA人员不必担心这一点并且只关注测试.

我为其他语言/工具生产的所有客户都足够好,除了Jmeter,我在这里做错了吗?

Ric*_*man 9

我为不同的API生成了JMeter(JMX)并且我让它工作,虽然有一些问题和警告.

首先它产生

  • 用户定义的变量替换为Host,Port,testCases,csvFileName
  • 每个API的JMX
  • 每个方法一个线程组(POST,GET,..)
  • 每个线程组的HTTP标头管理器,空白但有用.
  • 每个请求的HTTP采样器
  • 加载CSV数据以填充参数值
  • HTTP状态断言,在CSV文件中定义的错误代码上验证

警告和问题

  • 它不会使主机远离配置,它将替换为本地主机.您必须更改它或通过命令行传递它
  • 它使用默认端口8080,这也让我感到悲伤.
  • 循环计数由变量testCases控制.但是,如果您想通过命令行传递此信息,则JMeter的swagger-code-gen模板中存在一个错误

    • testCases变量在模板中有一个错误,它将testCases定义为$ {__ P(host,10)}但它应该是$ {__ P(testCases,10)} 在此输入图像描述
  • GET参数填充为0而不是$ {variable_name},这来自swagger codegen中的模板.我已经测试了我的叉子中的修复程序.另一种选择只是将其修复为JMX文件Original 在此输入图像描述 编辑参数后 在此输入图像描述

示例Swagger有效

以下是我使用的Swagger文件(从echo修改)和生成的(对参数进行了修改)JMX.我已经使用RedLine13 Example Test测试了这个JMX并根据需要传递了参数.传递参数

-JtestCases=50 
-Jhost=mazimi-prod.apigee.net 
-Jport=80
Run Code Online (Sandbox Code Playgroud)

这是Yaml的例子

---
swagger: '2.0'
info:
  version: 1.0.0
  title: Echo
  description: |
    #### Echos back every URL, method, parameter and header
    Feel free to make a path or an operation and use **Try Operation** to test it. The echo server will
    render back everything.
schemes:
  - http
host: mazimi-prod.apigee.net
basePath: /echo
paths:
  /{id}:
    get:
      parameters:
        - name: id
          in: path
          description: ID
          type: string
          required: true
        - name: user
          in: query
          description: name
          type: string
          required: true
        - name: location
          in: query
          description: location
          type: string
          required: true
      responses:
        200:
          description: Echo GET
Run Code Online (Sandbox Code Playgroud)

在Swagger CodeGen中更新了JMEter模板

由于在SwaggerCode Gen中使这项工作无缝存在一些问题,因此我创建了一个问题和拉取请求.如果您需要尽快使用它,叉子就在这里https://github.com/richardfriedman/swagger-codegen/commit/5aff601eaccf67ec44bb681816d40c25e5aa20a3