使用远程验证进行单元测试

时间:2011-06-05 13:01:14

标签: django unit-testing authentication

我在我的应用程序使用Django的默认身份验证时编写了一套测试,但现在我添加了Atlassian Crowd作为身份验证方法,现在这些测试失败了,主要是因为当我使用Crowd服务器时我想在家里进行测试。

每个应用都有它的Setup()方法

def setUp(self):
    """Set up the shared test data."""
    self.client.login(username='admin', password='letmein')

我正在通过评论AUTHENTICATION_BACKENDS来解决这个问题,但这不会在CI服务器上运行。

我不认为我得到的错误很重要,但为了完整性:

URLError: <urlopen error [Errno 8] nodename nor servname provided, or not known>

我尝试将两个身份验证后端添加到AUTHENTICATION_BACKENDS中,但我仍然得到相同的结果。

我可以选择让这些测试通过吗?

有没有办法强制用户登录?我能以某种方式模仿auth对象吗?

我可以在设置中对AUTHENTICATION_BACKENDS部分进行一些检查以检查它是否在测试模式下运行吗?但后来我正在为我的测试编写特殊情况,这种情况会使对象失败。

1 个答案:

答案 0 :(得分:3)

您可以更改AUTHENTICATION_BACKENDS方法中的setUp设置,然后在tearDown中将其更改回来。这个question's accepted answer就是一个例子,但设置不同。