在Locust中发布动态值

时间:2015-11-25 11:02:16

标签: python locust

我有一个应用程序,我正在尝试使用Locust加载测试。如果我事先知道帖子的参数,我可以将它们添加到帖子中,并且工作正常:

self.client.post("/Login", {"Username":"user", "Password":"a"})

应用程序使用一系列隐藏字段,这些字段在交互式发布页面时发送。这些字段的内容是动态的,并由服务器在运行时分配以管理会话等,例如

<input type="hidden" name="$$submitid" value="view:xid1:xid2:xid143:xid358">

有没有办法可以选择这些来添加我的帖子数据?我知道隐藏输入的名称。

1 个答案:

答案 0 :(得分:1)

您编写了一个使用PyQuery提取此数据的函数。你只需要在发送邮件请求之前调用它。如果你想创建一堆数据,你可以在on_start函数中调用它们将它们存储在一个数组中,然后在任务中使用它。请参阅以下示例:

from locust import HttpLocust, TaskSet, task
from pyquery import PyQuery

class UserBehaviour(TaskSet):

    def get_data(self, url, locator):
        data = []
        request = self.client.get(url)

        pq = PyQuery(request.content)
        link_elements = pq(locator)
        for link in link_elements:
            if key in link.attrib and "http" not in link.attrib[key]:
                data.append(link.attrib[key])

        return data

    @task
    def test_get_thing(self):
        data_ = self.get_data("/url/to/send/request", "#review-ul > li > div > a", "href")
        self.client.post("url", data = data_)