2

入口点.py

from other_file import UserBehaviour

class ApiUser(HttpUser):

  tasks = [UserBehaviour]

  def on_start(self):
    # log in and return session id and cookie
    # example: self.foo = "foo"

其他文件.py

from entry_point import ApiUser

class UserBehaviour(TaskSet):

  @task
  def do_something(self, session_id, session_cookie)
    # use session id and session cookie from user instance running the taskset
    # example: print(self.ApiUser.foo)

注意:通过文档,我确实发现“可以通过 TaskSet.user 从 TaskSet 实例中访问 User 实例”,但是我将用户导入任务集文件的所有尝试都导致了"cannot import name 'ApiUser' from 'entry_point'"错误。如果不是from entry_point import ApiUserI do from entry_point import *,那么我会收到name 'ApiUser' is not defined错误消息。

4

1 回答 1

1

非常感谢 @Cyber​​wiz 让我走上正轨。我终于设法弄清楚我做错了什么......事实证明,这是几件事。

首先,在 other_file.py 中导入 ApiUser 是不正确的,原因有两个:1)它创建了一个循环依赖项,以及 2)即使它最终会起作用,它也会导入 ApiUser 类,而不是 ApiUser 类的实例。

其次,我之前遇到了一个module locust.user has no attribute {name}错误,那是因为我的代码看起来像这样:

class UserBehaviour(TaskSet):
  # do something with user.foo

弄清楚了这一点,老实说,我不知道为什么我认为上述方法会起作用。我已经更改了代码以反映下面的示例,现在一切都像魅力一样工作:

class UserBehaviour(TaskSet):

  @task
  def do_something(self):
    # do something with self.user.foo
于 2020-07-06T18:12:26.197 回答