模拟依赖关系的依赖关系

时间:2017-09-04 17:51:45

标签: python mocking setuptools read-the-docs

想象一下以下场景:你有一个名为' foo'的python包。这取决于' bar'。包裹' bar'本身取决于另一个python包,让我们说一下,这取决于cannot be installed on readthedocs.io的C库。因此,' bar'

谦虚地嘲笑
class Mock(MagicMock):
    @classmethod
    def __getattr__(cls, name):
            return MagicMock()

MOCK_MODULES = ['shapely', 'shapely.wkt', 'shapely.wkb', 'shapely.geometry', 'shapely.ops']
sys.modules.update((mod_name, Mock()) for mod_name in MOCK_MODULES)
在conf.py文件中

现在,我想从' bar'中简单地模仿出依赖性,但仍然安装' bar'在RTD上,以便建立“foo”的文档。正常。 我怎么能告诉readthedocs.io模仿&bar; s bar的依赖??

1 个答案:

答案 0 :(得分:2)

环境变量READTHEDOCS

Check

import os
if 'READTHEDOCS' in os.environ:
    class Mock(MagicMock):
        @classmethod
        def __getattr__(cls, name):
                return MagicMock()

    MOCK_MODULES = ['shapely', 'shapely.wkt', 'shapely.wkb', 'shapely.geometry', 'shapely.ops']
    sys.modules.update((mod_name, Mock()) for mod_name in MOCK_MODULES)