我正在使用另一个 SO 建议来导入 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
时会起作用。或 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)
(我是正式单元测试的新手 - 所以,如果这里看起来很疯狂,请告诉我)。其他信息:
最佳答案
我认为您不需要 TestCase 中的 try/except 内容
import sys
import unittest
try:
import simplejson as json
except ImportError:
import json
class TestSomething(unittest.TestCase):
def test_json(self):
if ('json' in sys.modules or 'simplejson' in sys.modules):
self.assert_(True, "some kind of json loaded")
else:
self.fail()
if __name__ == "__main__":
unittest.main()
关于Python 单元测试/测试夹具测试模块是否已加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19667736/