1

django-webtest中,每个测试 TestCase 子类都带有 self.app,它是 webtest.TestApp 的一个实例,然后我可以通过 self.app.get('/',user='A') 让它作为用户 A 登录.

但是,如果我想在测试中测试用户 A 和用户 B 的行为,我应该怎么做?

似乎 self.app 只是传入了 extra_environ 的 DjangoTestApp() 。只创建它的另一个实例是否合适?

4

1 回答 1

0

我没有尝试按照您的建议设置另一个实例DjangoTestApp,但是我已经编写了复杂的测试,其中在以用户 AI 发出请求后,毫无问题地切换为以用户 B 发出请求,在每种情况下都将用户或用户名传入在提出请求时,例如self.app.get('/', user'A')您已经写过。

唯一没有按预期工作的部分是在发出未经身份验证的请求时,例如self.app.get('/', user=None). 这没有按预期工作,而是继续使用此请求之前的请求中的用户。

要重置应用程序状态(这应该允许您以顺序方式模拟具有多个用户的大多数工作流),您可以运行self.renew_app()它将刷新您的应用程序状态,从而有效地将当前用户注销。

要测试多个用户的同时访问(您的问题没有具体说明您要测试的内容),然后设置另一个实例DjangoTestApp似乎值得探索。

于 2013-12-18T17:28:41.633 回答