在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
实例似乎值得探讨。