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

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

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

最佳答案

我没有按照您的建议尝试尝试设置DjangoTestApp的另一个实例,但是我编写了复杂的测试,其中在以用户AI的身份发出请求之后,又切换为以用户B的身份发出请求而没有问题,每次都通过该用户或在发出请求时输入用户名,例如self.app.get('/', user'A')如您所写。

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

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

要测试多个用户的同时访问(您的问题并未确切说明您要测试的内容),那么设置另一个DjangoTestApp实例似乎值得探讨。

10-08 03:09