Swagger Codegen JMeter测试数据模板

时间:2016-09-14 04:34:26

标签: jmeter swagger swagger-codegen openapi

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

您可以使用任何定义文件来重现:

  1. 转到http://editor.swagger.io/#/
  2. 打开文件菜单中的任何示例
  3. 从生成客户端菜单中,单击Jmeter
  4. 我所期望的是具有API整个框架的JMX,以便QA人员不必担心这一点,只关注测试。

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

1 个答案:

答案 0 :(得分:7)

我为不同的API生成了JMeter(JMX)并且我开始使用它,虽然有一些问题和警告。

首先生成

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

警告和问题

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

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

有效的Swagger示例

以下是我使用的Swagger file(从echo修改)和生成的(对参数进行了修改)JMX。我使用JMX对此RedLine13 Example Test进行了测试,并根据需要传递参数。传递参数

-JtestCases=50 
-Jhost=mazimi-prod.apigee.net 
-Jport=80

这是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

在Swagger CodeGen中更新了JMEter模板

由于在SwaggerCode Gen中使这项工作无缝存在一些问题,我创建了一个issue and pull request。如果你需要尽快使用叉子https://github.com/richardfriedman/swagger-codegen/commit/5aff601eaccf67ec44bb681816d40a25e5aa20a3