pytest可以忽略导入依赖吗?我想对 Pi 代码进行单元测试

Can pytest ignore import dependencies? I want to unit test Pi code

我正在为我的项目使用(据我所知)Raspberry Pi specific 库 (smbus)。我想使用 pytest 在我的机器上和在我学校的服务器上使用 gitlab-ci 测试软件。这并不重要,但这是针对俱乐部项目而非家庭作业。

我的环境描述:

我正在使用 Ubuntu 17.04/PyCharm 作为我的开发环境。 我可以访问的gitlab runner是基于docker的(我选择环境)。

以上两者都没有smbus的能力,也没有i2c通讯的能力。

我想知道是否可以告诉 pytest 忽略 smbus 导入而不在导入周围添加 try/except?

谢谢。

如果你真的想避免 try/accept 你可以有一个函数 return 导入...

def get_smbus():
    import smbus
    return smbus

smbus = get_smbus()

这使您能够使用模拟库轻松覆盖 get_smbus 函数。

但我个人会使用 try / except 并捕获 ImportError.