在 Locust 测试中将变量添加到 URL

Add variable to URL in Locust test

我一直在尝试弄清楚如何添加从 Locust 上的先前 'task' 捕获的变量,以及如何将变量添加到新任务 GET 请求 URL。

下面的变量 portid 假设在获取请求的末尾继续:/portfolios/portid

示例 1:

@task
    def PortPage(self):
      get = self.client.get("/portfolios/" + portid, data=data, headers=header)

错误:

TypeError: can only concatenate str (not "int") to str

示例 2:

我也尝试过使用 % 标志,因为我读过它以前有效但不适用于我的实例..

@task
    def PortPage(self):
      get = self.client.get("/portfolios/" % portid, data=data, headers=header)

错误:

TypeError: not all arguments converted during string formatting

非常感谢任何帮助。

您只是在寻找正常的字符串格式!

>>> portid = 100
>>> f"/portfolios/{portid}"
'/portfolios/100'

问题很简单,Python 无法猜测当您尝试将数字添加到字符串时会发生什么!

您可以根据需要从几个选项中进行选择,但 f-string 变体可能更适合您的情况

>>> "/portfolios/" + portid          # fails with the error
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can only concatenate str (not "int") to str
>>> "/portfolios/" + str(portid)     # effectively simplest
'/portfolios/100'
>>> f"/portfolios/{portid}"          # modern
'/portfolios/100'
>>> "/portfolios/{}".format(portid)  # obvious
'/portfolios/100'
>>> "/portfolios/%i" % portid        # considered old, will do some coercions
'/portfolios/100'