【问题标题】:JMeter Parameterization - Get the weather for cities with names that contain spacesJMeter 参数化 - 获取名称中包含空格的城市的天气
【发布时间】:2021-10-07 11:21:16
【问题描述】:

我尝试使用来自openweathermap.org 的城市名称获取天气数据。逗号后面是国家代码。我指的是this link 这是我的 excel 文件中的 CSV 数据,包括国家代码以及逗号:

这是 JMeter 中的 CSV 数据集配置:

但是当我尝试使用 4 个线程组运行时,它返回错误:

当我尝试更改不带逗号的 CSV 数据时,除了最后一行之外,它工作正常:

这里的问题:

  1. JMeter 是否无法读取带有逗号和空格的 CSV 数据?
  2. 是否必须将读取文件从 CSV 更改为记事本?
  3. 参考 CSV 文件的最后一行,我尝试搜索纽约市(带空格)但返回错误。根据openweathermap的说法,搜索引擎是灵活的,所以我不知道为什么在这种情况下它无法读取“纽约”,但可以一个字读取城市。

感谢有人可以提供帮助。谢谢。

【问题讨论】:

  • 不使用 Excel 打开时,您的 CSV 是什么样的? (例如记事本)它可能会看到 , 并将国家代码作为单独的列查看。
  • 我在记事本中查看,例如:“London,UK”
  • 我的意思是,如果您使用, 解析您的CSV,它将考虑London,UK 2 个单独的列:LondonUK。另外我认为New York 会给你带来问题,因为它有一个空格分隔两个单词,当你将它传递到 URI 时它不会工作
  • 好的。如何解决?
  • 我相信您有 2 个问题:解析 CSV 并将值传递给 URI。第一个可以通过更改 CSV 中的分隔符来解决。第二个可以通过URL编码来解决。

标签: jmeter jmeter-plugins jmeter-5.0 openweathermap jmeter-4.0


【解决方案1】:

您忘记添加最重要的屏幕截图 - HTTP Request 采样器

很可能您忘记勾选 q 参数旁边的 URL Encode 框。

我不认为空间需要编码,但是逗号 certainly does 所以您需要手动或通过勾选上述框将 , 更改为 %2C

如果您在手动构建 HTTP 请求采样器时遇到问题,请注意,您可以使用 JMeter 的 HTTP(S) Test Script RecorderJMeter Chrome Extension 记录来自 https://openweathermap.org/find 页面的关联网络调用。

【讨论】:

    【解决方案2】:

    发送字符为空格时需要对值进行编码,使用__urlencode

      ${__urlencode(${cityname})}
    

    【讨论】:

    • 我试过了,但还是不行。这是错误:java.net.URISyntaxException: Illegal character in query at index 57: http://api.openweathermap.org/data/2.5/weather?q=New+York}&appid=e6f90e2506dfd0f2dbd1ed2d87fe18ef 我在 New+York 之后注意到,那里有额外的括号
    • 如何去掉多余的括号符号?
    • @sabbyna 你确定你没有添加额外的}
    猜你喜欢
    • 2016-12-16
    • 2012-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-09
    • 2020-03-27
    • 1970-01-01
    相关资源
    最近更新 更多