Использование Python 3. В моем приложении используется модуль, который должен быть установлен pip
, но если у пользователя не установлен правильный модуль, я хочу предоставить запасной модуль.
Я хотел бы протестировать это без необходимости переключения среды.Отсюда следующее:
Файл a.py
"""
This module would, under ideal circumstances, be installed with pip
but maybe not...
"""
class Foo():
@staticmethod
def test():
return "This is the module we'd like to import"
Файл b.py
"""
This is my own fallback module
"""
class Foo():
@staticmethod
def test():
return "This is the fallback module"
Файл c.py
try:
from sandbox.a import Foo
except ImportError:
from sandbox.b import Foo
"""This is the module in my app that would actually use Foo"""
Воттест, d.py
import sys
def test_it():
sys.modules['a'] = None
import sandbox.c as c
s = c.Foo.test()
assert s == "This is the fallback module"
Это не удается с помощью AssertionError
E AssertionError: assert 'This is the ...ike to import' == 'This is the fallback module'
E - This is the module we'd like to import
E + This is the fallback module
sandbox/d.py:8: AssertionError
Как правильно проверить это, чтобы убедиться, что пользователи никогда не получат ImportError (если онимодуль a.py
не установлен), и они имеют функции, предоставляемые резервным модулем b.py
в таком случае?