【问题标题】:django-webtest with multiple test client具有多个测试客户端的 django-webtest
【发布时间】:2013-08-20 10:44:01
【问题描述】:
在django-webtest中,每个测试TestCase子类都带有self.app,它是webtest.TestApp的一个实例,然后我可以通过self.app.get('/',user='让它以用户A的身份登录一种')。
但是,如果我想在测试中同时测试用户 A 和用户 B 的行为,我应该怎么做?
似乎 self.app 只是传入了 extra_environ 的 DjangoTestApp() 。只创建它的另一个实例是否合适?
【问题讨论】:
标签:
django
testing
integration-testing
django-webtest
【解决方案1】:
我没有尝试按照您的建议设置DjangoTestApp 的另一个实例,但我已经编写了复杂的测试,在以用户 A 发出请求后,我切换到以用户 B 发出请求,在每种情况下都没有问题在发出请求时传递用户或用户名,例如self.app.get('/', user'A') 你已经写过了。
唯一没有按预期工作的部分是在发出未经身份验证的请求时,例如self.app.get('/', user=None)。这没有按预期工作,而是继续使用此请求之前的请求中的用户。
要重置应用状态(这应该允许您以顺序方式模拟具有多个用户的大多数工作流),您可以运行self.renew_app(),它将刷新您的应用状态,有效地注销当前用户。
要测试多个用户的同时访问(您的问题并未具体说明您要测试的内容),然后设置 DjangoTestApp 的另一个实例似乎值得探索。