7

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

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

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

我期望的是一个具有整个 API 框架的 JMX,这样 QA 人员就不必担心这一点,而只关注测试。

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

4

1 回答 1

10

我为不同的 API 生成了 JMeter (JMX),并且我得到了它的工作,尽管有一些问题和警告。

首先它生成

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

注意事项和问题

  • 它不会阻止您的主机配置,它会替换为本地主机。您必须更改它或通过命令行传递它
  • 它使用默认端口 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

这是示例 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 中无缝完成这项工作存在一些问题,因此我创建了一个问题和拉取请求。如果您需要尽快使用它,请在此处使用分叉https://github.com/richardfriedman/swagger-codegen/commit/5aff601eaccf67ec44bb681816d40a25e5aa20a3

于 2016-09-14T16:32:47.537 回答