繁体   English   中英

测试依赖于硬件的 Python 代码

[英]Testing Python code that relies on hardware

所以我有一些代码使用 gphoto2 来捕获一些图像和东西,我认为测试这个的最好方法是将 gphoto2 代码包装在类似 if TESTING: 然后返回假数据,否则做 gphoto2 的东西。

有谁知道我将如何实现这一点,我试过在谷歌上搜索一些东西,但我没有运气专门检测是否正在运行单元测试。

我认为它会类似于 unittest: 但也许有更好的方法来完全做到这一点?

编辑:所以根据到目前为止的评论和答案,我尝试了 unittest.mock 包,它没有像我希望的那样工作,让我解释一下。

如果我有调用捕获图像方法(方法 B)的方法 A,则保存图像和其他一些位。 我设法模拟方法 B 以便它返回图像或无,当我专门调用方法 B 时它工作正常,但是当我尝试调用方法 A 时,它不使用方法 B 的模拟,它使用实际方法 B.

如何让方法 A 使用模拟方法 B?

模拟包的存在正是出于这个原因。

它是 Python 2 的一个独立的、可通过 pip 安装的包; 它已被合并到 Python 版本 >= 3.3(作为unittest.mock )的标准库中。

只需在测试代码中使用模拟库即可。 通过这种方式,您可以屏蔽外部 API(在您的情况下为硬件调用)并返回可预测的值。 我会推荐flexmock https://pypi.python.org/pypi/flexmock它非常简单。

在测试代​​码的开头,您将编写如下内容: flexmock(SomeObject).should_receive('some_method').and_return('some', 'values')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM