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

Python pytest可以忽略导入依赖项吗?我想对Pi代码进行单元测试,python,python-3.x,raspberry-pi,raspberry-pi3,Python,Python 3.x,Raspberry Pi,Raspberry Pi3,我正在为我的项目使用一个(据我所知)树莓Pi特定库(smbus)。我想使用pytest在我的机器上测试软件,并在我学校的服务器上使用gitlab ci测试软件。这并不重要,但这是一个俱乐部项目,不是家庭作业 我的环境描述: 我正在使用Ubuntu 17.04/PyCharm作为我的开发环境。 我可以访问的gitlab runner是基于docker的(我选择环境) 以上两种都不具备smbus或i2c通信能力 我想知道是否可以告诉pytest忽略smbus导入,而不在导入周围添加try/excep

我正在为我的项目使用一个(据我所知)树莓Pi特定库(smbus)。我想使用pytest在我的机器上测试软件,并在我学校的服务器上使用gitlab ci测试软件。这并不重要,但这是一个俱乐部项目,不是家庭作业

我的环境描述:

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

以上两种都不具备smbus或i2c通信能力

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


谢谢。

如果您真的想避免出现
错误,请尝试接受
/
您可以使用函数返回导入

def get_smbus():
    import smbus
    return smbus

smbus = get_smbus()
这使您能够使用模拟库轻松覆盖
get\u smbus
函数


但是我个人会使用
try
/
except
和catch
importorror

try
/
except
的坏处是什么?谢谢。我只是假设try/except是一种不好的做法。try-except实际上是一种很好的做法——只要您捕捉到特定的异常。捕捉所有错误并忽略它们是不好的做法。