当前位置: 首页 > 知识库问答 >
问题:

如何在用户类中初始化参数

毛峻
2023-03-14

我用一些init参数创建了一个User类,但在执行时得到了TypeError,如下所示:“hocust-f stress.py--headless-u 100-r 100-t 1m”

Traceback(最近一次调用最后一次):文件src/gevent/greenlet.py,第906行,在gevent._gevent_cgreenlet。Greenlet.run文件/库/框架/Python.framework/Versions/3.7/lib/python3.7/site-packages/locust/runners.py,第406行,在lambda:超级(LocalRunner,自我). start(user_count,spawn_rate,等待=等待)文件/库/框架/Python.framework/Versions/3.7/lib/python3.7/site-packages/locust/runners.py,第314行,在startself.spawn_users(user_count,spawn_rate=spawn_rate,等待=等待)文件/库/框架/Python.framework/Versions/3.7/lib/python3.7/site-packages/locust/runners.py,第206行,在spawn_users产卵()文件/库/框架/Python.framework/Versions/3.7/lib/python3.7/site-packages/locust/runners.py,第199行,在产卵new_user=user_class(self.environment)打字错误:init()缺少4个必需的位置参数:uid、room_id、action_uid和appkey

class JoinRoomUser(HttpUser):
    wait_time = between(1, 2.5)
    host = ''

    def __init__(self, env, uid, room_id, action_uid, appkey):
        self.env = env
        self.uid = uid
        self.room_id =room_id
        self.action_id = action_uid
        self.appkey = appkey

如何启动这些参数?

蝗虫脚本中的任务如下。

@task
def join_room(self):
host = 'xxxxxxx'
body = {
    "room_id": self.room_id,
    "userid": self.action_uid,
    "uid": self.action_uid
}
rsp = self.client.post(url, json=body, headers=get_header(self.appkey))

如果我执行“hocust-f stress test/stress.py'Qa'123456'101013'686868'eos'--headless-u 100-r 100--run-time1m”,然后抛出“bogon/ERROR/hocust.main:未知用户:Qa,686868,123456,101013,eos”错误。

共有1个答案

郑星辰
2023-03-14

尝试使用*args,**kwargs和超级()从父类继承时。对于这种特殊情况,您不会在初始化步骤中提供uid、room_id、action_uid、appkey变量,因为HttpUser继承自User,它只有一个1参数环境

class SimpleSendRequest(User):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

对于用户类更建议从用户类文档继承

如果确实需要将变量设置为子对象,可以在初始化步骤进行设置,如下所示:

def __init__(self, env, *args, **kwargs):
    super().__init__(env, *args, **kwargs)
    self.uid = your_map['uid']
    self.room_id = your_map['room_id']
    self.action_id = your_map['action_uid']
    self.appkey = your_map['appkey']

唯一的问题是,你将如何使用它们

要添加自定义参数,请通过CLI检查github:

    @events.init_command_line_parser.add_listener
def init_parser(parser):
    parser.add_argument("--customarg", type=str, env_var="LOCUST_MY_ARGUMENT", default="1234", help="It's working")

@events.init.add_listener
def _(environment, **kw):
    print("Custom argument supplied: %s" % environment.parsed_options.customarg)

要在类JoinRoomUser init中获取它,请使用:

print(self.environment.parsed_options.customarg)

像这样跑:

locust -f locustfile.py --customarg CUSTOM_VALUE --headless -u 10 -r 10 --run-time 5s
 类似资料:
  • 上一节中我们给大家介绍了Fullpage的基本用法,可能很多用户有个性化的需求,没关系Fullpage提供了多个参数,我们可以配置这些参数,满足我们项目的需求。 controlArrows 默认值:true,决定是否使用控制箭头向左或向右移动幻灯片。 verticalCentered 默认值:true,决定是否初始化后,是否垂直居中网页的内容,如果你想自定义元素的位置,那么你可以设置为false,

  • 如下 ServletContext 接口方法允许 servlet 访问由应用开发人员在Web 应用中的部署描述符中指定的上下文初始化参数: getInitParameter getInitParameterNames 应用开发人员使用初始化参数来表达配置信息。代表性的例子是一个网络管理员的 e-mail 地址,或保存关键数据的系统名称。

  • 我试图从WebClient中替换RestTemplate,因为根据Java文档,RestTemple将被弃用。Spring团队建议尽可能使用WebClient。 之前的RestTempalte代码如下 我想从WebClient替换RestTemplate。所以我实现了类WebClientConnection,如下所示 我使用这个依赖项 Webclient create 上有堆栈溢出错误 如何正确地

  • 问题内容: 我正在初始化这样的数组: NetBeans在此行指出一个错误: 我该如何解决这个问题? 问题答案: 上面的信息不正确(语法错误)。这意味着你正在分配一个仅可容纳元素的数组。 如果要初始化数组,请尝试使用: 注意两个声明之间的区别。将新数组分配给声明的变量时,new必须使用。 即使你纠正了语法,访问仍然是不正确的(你只能访问,因为Java中的数组索引是基于0的)。访问]将抛出。

  • 在Java中,可以初始化数组,例如: Kotlin的数组初始化是什么样子的?

  • 问题内容: 我无法按照以下代码初始化列表: 我遇到以下错误: 无法实例化类型 我该如何实例化? 问题答案: 如果你检查API,则会注意到它说: 作为一种手段,它无法实例化(不可能)。 如果你检查该链接,则会发现一些实现的: 所有已知的实施类: 那些可以实例化。使用它们的链接来了解有关它们的更多信息,即IE:知道哪个更适合你的需求。 三种最常用的可能是: 奖励: 你还可以使用,以更简单的方式使用值实