我正在使用另一个 SO 建议进行 importing simplejson
,内容如下:
try:
import simplejson as json
except ImportError:
import json
但是,在编写我的单元测试以查看“其中一个 json 模块”是否实际上已被导入时,我陷入了我自己设计的循环噩梦中!/叹。
class AreAllModulesLoaded(unit.TestCase):
"""Test to make sure all modules are loaded"""
def test_json(self):
try:
self.assertTrue("simplejson" in sys.modules)
except:
try:
self.assertTrue("json" in sys.modules)
except AssertionError:
raise
我认为这样的事情会起作用,但是,在检查unittest.failUnless
or unittest.assertTrue
(我都尝试过)时,它会引发失败并且测试停止(它失败是因为我只通过加载json
而不是加载导致失败simplejson
)......
我的预期目标是我希望我的单元测试确认已加载 json 或 simplejson。我该怎么办?
我曾考虑在断言之前捕获“真实性”,然后只传递“真”或“假”,但这对于单元测试来说并不合适,因为我认为这应该是单元测试的一部分而不是工作-around(这是我的观点,也许你感觉不同)。例如,我曾想过做一些类似(python-esque pseduoish code)的事情:
_simplejsonLoaded = "simplejson" in sys.modules
_jsonLoaded = "json" in sys.modules
self.assertTrue(_simplejsonLoaded or _jsonLoaded)
(我是正式单元测试的新手——所以,如果这里看起来有些疯狂,请告诉我)。
其他信息:
- 我正在使用 Python 2.6(出于工作原因 - 无法更改)
- Windows 和 Linux