在django-webtest中,每个测试TestCase子类都带有self.app,它是webtest.TestApp的一个实例,然后我可以通过self.app.get('/',用户)将其作为用户A登录= 'A')。
但是,如果我想在测试中测试用户A和用户B的行为,我应该怎么做?
似乎self.app只是传入了extra_environ的DjangoTestApp()。是否适合创建它的另一个实例?
答案 0 :(得分:0)
我没有尝试按照你的建议设置另一个DjangoTestApp
实例,但是我编写了复杂的测试,在用户AI发出请求之后,我们切换到用户B发出请求而没有问题,每个案例在发出请求时传递用户或用户名,例如正如您已经写过的那样self.app.get('/', user'A')
。
唯一没有按预期工作的部分是在进行未经身份验证的请求时,例如self.app.get('/', user=None)
。这没有按预期工作,而是继续在此之前的请求中使用用户。
要重置应用状态(应该允许您以顺序方式模拟多个用户的大多数工作流),您可以运行self.renew_app()
,这将刷新您的应用状态,有效地记录当前用户。
要测试多个用户同时访问(您的问题没有明确说明您要测试的内容),那么设置另一个DjangoTestApp
实例似乎值得探索。