所以我有一些代码,它使用gphoto2来捕捉一些图像和东西,我想最好的测试方法是把gphoto2代码包装成一个if测试:然后返回假数据,否则做gphoto2的东西。在
有人知道我将如何实现这一点吗,我试着在google上搜索了一些东西,但是我没有运气特别检测单元测试是否正在运行。在
我假设它会是类似于if unittest:但是也许有更好的方法来完成这个任务?在
编辑: 根据目前的评论和答案,我尝试了unittest.mock包裹,没能如我所愿,让我解释一下。在
如果我有方法A调用捕获图像方法(方法B),然后保存图像和其他一些位。我设法模拟了方法B,使其返回image或None,当我具体调用方法B时,这很好,但是当我尝试调用方法A时,它没有使用方法B的mock,而是使用实际的方法B
如何使方法A使用模拟方法B?在
只需在测试代码中使用模拟库。这样您就可以屏蔽外部api(在您的情况下是硬件调用)并返回可预测的值。 我建议flexmockhttps://pypi.python.org/pypi/flexmock这非常简单。在
在测试代码的开头,您将编写如下内容:
flexmock(SomeObject).should_receive('some_method').and_return('some', 'values')
由于这个原因,mock包存在。在
它是python2的一个独立的、pip可安装的包;它已经被合并到Python versions>;=3.3的标准库中(作为
unittest.mock
)。在相关问题 更多 >
编程相关推荐