我正在使用蝗虫,我正在模仿用户的行为。但是我在访问父类变量时遇到了麻烦。知道我怎么能通过吗?
return View(Model);
当我到达User.some_user时,我从来没有用户。
答案 0 :(得分:1)
您尚未提供所有代码,但问题可能是get_user()
在某处将some_user
设置为实例属性,如{{1} }。
这只会为self.some_user = foo
的特定实例设置some_user
(因此对于Bob,Lisa,Beto,User53等),但不适用于User
类本身。使用User
访问some_user
时,如self
所示,您可以为执行这些语句的特定实例设置它,而不是类。在self.some_user
,您正在访问类属性 updating()
,而不是User.some_user
这样的特定实例属性。为了更新class属性,默认情况下对usr53.some_user
的所有实例都不变,您应该在User
中使用User.some_user = foo
进行设置。
现在在get_user()
中,它正在尝试访问可能从未设置过的class属性。因为像path = "/posts/" + User.some_user
这样的嵌套类无法访问它们被调用的嵌套类(UpdatingUser
)的实例,User
将无法访问任何UpdatingUser
使用some_user
或self
的任何其他实例属性进行设置。因此,解决方案是让User
设置class属性而不是实例属性,如上一段所述。
答案 1 :(得分:0)
这个答案有点晚了,但是,如果有人遇到这个问题,则TaskSet具有一个parent
属性,该属性可用于访问父级的实例变量。以下是我用于一次基本登录的内容:
class UserBehaviour(TaskSet):
def on_start(self):
self.token = self.login()
self.headers = {'Authorization': 'Bearer ' + self.token}
def login(self):
with self.client.post("/login", catch_response = True) as response:
return response.json()['token']
@task
class UserTask1(TaskSet):
@task
def get_data(self):
self.client.get("/data", headers = self.parent.headers)
class WebsiteUser(HttpLocust):
task_set = UserBehaviour