模拟ReadTheDocs的子模块

jki*_*ele 9 python mocking read-the-docs

我正在尝试使用ReadTheDocs记录Python项目.最初,构建过程会在以下情况下死亡:

from osgeo import gdal, osr
Run Code Online (Sandbox Code Playgroud)

我已经阅读了rtd faq并使用了mock来为我提供麻烦的osgeo模块.现在构建过程使它通过导入但是窒息:

from osgeo.gdalconst import * 
Run Code Online (Sandbox Code Playgroud)

有了这个相当无益的错误:

RuntimeError: sys.path must be a list of directory names
Run Code Online (Sandbox Code Playgroud)

我完全不习惯使用mock,但我认为问题在于它osgeo是一个模拟模块,因此没有子模块gdalconst.我该如何解决这个问题?有没有办法模拟子模块?

小智 6

有点晚了......但我遇到了这个寻找解决方案(使用嵌套模块mock).我像这样模拟了模块和子模块:

MOCK_MODULES = ['dbs', 'dbs.apis', 'dbs.apis.dbsClient']
sys.modules.update((mod_name, Mock()) for mod_name in MOCK_MODULES)
Run Code Online (Sandbox Code Playgroud)

订单重要的地方.希望这有助于其他任何想要解决此问题的人.