在命令行中使用python模拟导入操作在命令行中失败

时间:2018-07-19 15:33:09

标签: python-3.x mocking anaconda spyder python-unittest

我正在使用spyder和anaconda提示符,它们都使用相同的环境\ envs \ POC \ pythonw.exe(已在脚本中用sys.enviroment检查)。

使用python Mock我正在测试一个使用RPi.GPIO的类,该类未在计算机上安装。当我在spyder IDE中运行代码时,一切似乎都按预期工作。但是,当我通过命令行运行相同的代码时,出现导入错误,这似乎使该模拟无法正常工作。

我的代码模拟了导入,并调用了我正在测试的类的构造函数(我希望使用更精致的方法):

import sys
sys.modules["RPi.GPIO"] = MagicMock()
from sensor.rtd import RTD
#This works in spyder but not cmd line
rtd = RTD(**self.testValues)

导致问题的类的构造函数:

class RTD():
    def __init__(self):    
        import RPi.GPIO as GPIO
        self.GPIO = GPIO

在命令行中运行的错误给出:

Traceback (most recent call last):
File "test_rtd.py", line 45, in setUp
self.rtd = RTD(**self.testValues)
File "rtd.py", line 32, in __init__
import RPi.GPIO as GPIO
ModuleNotFoundError: No module named 'RPi'

或者,还有更好的方法来拦截导入调用吗?

0 个答案:

没有答案