我在使用其他SO推荐导入simplejson
/测试夹具测试,其内容如下:Python的单元测试,如果模块被加载
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。我该怎么办?
我曾经想过在声明之前捕获“真实性”,然后只通过“True”或“False”,但这不适合单元测试,因为我认为这应该是单元测试的一部分而不是解决方法(这是我的观点,也许你感觉不一样)。例如,我曾想过做这样的事情(蟒式的pseduoish代码):
_simplejsonLoaded = "simplejson" in sys.modules
_jsonLoaded = "json" in sys.modules
self.assertTrue(_simplejsonLoaded or _jsonLoaded)
(我是新来的正式单元测试 - 所以,如果事情太疯狂了这里请让我知道)。
其他信息:
- 即时通讯使用Python 2.6(因工作原因 - 不能更改)
- Windows和Linux
我
给予好评只是使用'圆形的噩梦,因为这是我自己设计的' – jramirez
顺便说一句,你为什么就不能说assertTrue('simplejson 'in modules或'json'in modules)? – Himanshu
@Himanshu,工作!我没有想到要那样做。 –