使用doctest时处理导入错误

时间:2010-04-06 12:33:03

标签: python doctest

我不时在使用Python编写代码时,我不得不使用某些第三方模块。

EG。当我编写用户身份验证时,可以通过多种方式完成,其中一种方法是使用LDAP。但是,如果用户不想使用LDAP身份验证,他可以在配置文件中选择其他选项,在这种情况下,他不应该安装ldap模块。

一般来说,我通过以下方式解决这个问题:

if config.foo: 
   import ldap_auth as auth
elif config.foo2:
   import other_auth as auth
...
auth.do_stuff(...)

我只在ldap_auth模块中导入ldap模块。我个人认为这很好,但是,当然,doctests在尝试执行ldap_auth时会引发ImportError。

现在,我知道我可以通过尝试在ldap_auth中导入ldap模块来捕获它,但这只是有点混乱看起来漂亮的代码(整个“import ldap_auth as auth”商务的全部意义在于避免ImportErrors)。

在使用此“模式”时,是否有更优雅的方法可以防止doctests引发ImportErrors?

干杯,

汤姆

1 个答案:

答案 0 :(得分:1)

推荐的方法是

try:
    import foo as auth
except ImportError:
    import bar as auth

它避免了竞争条件,我不认为它看起来很糟糕。