使用Jmeter

时间:2017-09-26 18:28:46

标签: python flask jmeter

我试图测试由令牌验证的REST API。这个过程是:

  1. 提供用户名和密码以获取令牌
  2. 提取令牌并将其保存到Jmeter(AUTH_TOKEN)
  3. 中的变量中
  4. 设置标题'授权'使用提取的令牌值。
  5. 使用令牌发送请求。
  6. 这是我的测试计划:

    enter image description here

    我可以成功提取令牌。但是,由于缺少授权,在步骤4中发送请求失败。查看结果树显示请求包含授权标头,但服务器无法找到授权标头。如下图所示,我添加了2个头文件Authorization和Content-Type,它们出现在请求中。服务器返回了它实际收到的标题,但没有授权:

    enter image description here

    任何人都可以帮我解决这个问题吗?非常感谢。

    P / S:服务器通过Python和Flask框架实现RESTful API。我使用Apache HTTP Server部署了服务器。

    ========== [增订] ========================

    服务器代码在P​​ycharm中使用Flask实现。当从JMeter向使用嵌入式Flask服务器运行的服务器发送请求时,一切都很完美。只有在使用Apache HTTP Server部署服务器代码时才会出现此问题。在上述情况下,JMeter的配置与端口完全相同。但如果原因来自Apache服务器,那么它似乎并不合理。

    ========== [更新&解决] ========================

    我在Missing authorization header找到了问题的原因。由于使用Apache和mod_wsgi部署Web应用程序,因此默认情况下不会将授权标头传递给应用程序。我必须将此行WSGIPassAuthorization On添加到我的虚拟主机配置中。

2 个答案:

答案 0 :(得分:0)

请检查您的api端点是否需要具有“GET / regions”请求的请求正文。在“请求”部分的第二个屏幕截图中,“获取数据:”部分为空白。它主要意味着服务器期望请求正文以及您的GET请求。

答案 1 :(得分:0)

我的期望是您的Extract token工作不正常,即您的${BEARER}变量在实际值之前有一个空行,如屏幕截图所示。

使用Debug Sampler and View Results Tree Listener组合仔细检查${BEARER}变量值:它不应包含空行。如果是 - 请检查您的Extract token配置并对其进行修改以仅返回标头值。

建议使用JSON Extractor从JSON数据类型中获取值。