有什么方法可以将主机值作为参数发送到蝗虫中吗?

Is there any way where I can send host value as a parameter in locust?

我想知道是否有任何方法可以将主机值作为参数发送。我知道蝗虫提供了一个参数“--host”,它可以在这里提供帮助,但它对我不起作用。 这是我的代码实现 -

class NcsoTest(TaskSet):

    REQ_HEADER = {
        "Accept": "application/json",
        "Accept-Encoding": "gzip, deflate",
        "Connection": "keep-alive",
        "Content-Length": "860",
        "Content-Type": "application/json",
        "User-Agent": "python-requests/2.21.0",
     }

    @task(1)
    def send_post_request(self):
        response = self.client.post("/api/v2/services", data=Singleton.json_body, headers=NcsoTest.REQ_HEADER)
        print response


class NcsoLoad(HttpLocust):

    max_wait = 300
    min_wait = 300
    sleep_time = 10

    task_set = NcsoTest

我正在对 运行 蝗虫使用此命令。 pipenv 运行 locust -f testsuite/playground/locust_create_ics_host_flow.py --master --no-web --clients=1 --hatch-rate=1 --host=https://10.247.123.172 --运行-时间=1m

我尝试了多种方法,但主机值未在 self.client.post 中传播和提取。

谁能帮我解决这个问题?

可以通过三个选项来完成您所询问的内容。第一个选项是通过删除等号来更改主机条目参数。

来自

--host=https://10.247.123.172  

--host https://10.247.123.172  

在第二个选项中,编辑您的测试文件并添加一个主机条目,如下所列。

testsuite/playground/locust_create_ics_host_flow.py  

class NcsoLoad(HttpLocust):  
    host = "https://10.247.123.172"  
    max_wait = 300  
    min_wait = 300  
    sleep_time = 10 
    task_set = NcsoTest  

使用任一选项,但不能同时使用。这可能会在路上造成混乱。需要选项一和二的主机条目才能在 UI 测试时在 Web UI 上显示主机站点。不使用主机条目将在网络上产生 "None" 值 UI。没什么大不了的,除非在测试时与客户合作或在原始 post 中使用“--no-web”选项。

最后一个选项非常酷,在编写测试用例时提供了更大的灵活性。下面的 link 中提供了更多信息。

# Support for tests that use multiple hosts  
https://github.com/locustio/locust/issues/150

还有一件事需要考虑。删除所有“=”,因为它们在每个参数中都不是必需的。

来自

locust -f testsuite/playground/locust_create_ics_host_flow.py --master --no-web --clients=1 --hatch-rate=1 --host=https://10.247.123.172 --run-time=1m

locust --locustfile testsuite/playground/locust_create_ics_host_flow.py --master --no-web --clients 1 --hatch-rate 1 --host https://10.247.123.172 --run-time 1m  

来自"The Zen of Python, by Tim Peters"

>>> import this  
Explicit is better than implicit.  

希望此信息对您有所帮助。

此致,

我可以使用脚本外部的主机参数将主机值发送到我的程序。 这是我通过 shell 脚本使用的两个命令,并传递了以下值:

./run_locust_host.sh --locust_file testsuite/host/locust_host_flow_task.py --host https://10.123.123.123 --min_wait_time 300 --max_wait_time 300 --num_clients 1 --hatch_rate 1 --test_time 2m

此脚本解析所有细节并将值分配给相应的蝗虫参数。

在脚本(py 文件)中,它能够获取主机值并执行下面的 post 请求。

response = self.client.post("/api/v2/services", data=Singleton.json_body, headers=NcsoTest.REQ_HEADER, verify=False)

我之前的请求有效但失败了,因为我没有在 post 请求中指定 "verify=False" 这让我相信主机值没有传播。

您可以这样定义 config.py 文件:


class EnvSettings(object):

 host_url = 'http://test.com/'

然后从你的蝗虫class,你可以导入


host = EnvSettings.host_url