【发布时间】:2015-03-25 12:48:53
【问题描述】:
我有一个代表我们的 DB 层的类,它在某些类内部被实例化(我不能将它作为外部参数传递)
例如:
class MyClass(object):
def __init__(self):
self.dbapi = DatabaseAPI()
self.timeout = 120
def some_methods(self):
pass
我们正在编写一些单元测试,并且我们想使用我们将在测试运行之前创建的现有实例来模拟 self.dbapi。
例如:
my_dbapi = DatabaseAPIMock()
...
...
@patch('MyModule.DatabaseAPI', my_dbapi)
def my_test(self):
my_class = MyClass() #<---This is where I'm not able to mock the DatabaseAPI
到目前为止,这是我试图实现的目标,但通过调试代码,我看到 self.dbapi 是用真实对象实例化的,而不是用预制的模拟实例化的。
我错过了什么?
顺便说一句,我们正在运行 python 2.7
提前致谢!
【问题讨论】:
-
您能解释一下如何将
DatabaseAPI导入MyModule吗? -
我已经完全改变了我的答案。
标签: python unit-testing nose nosetests python-unittest