我正在尝试用errbot测试修补依赖项。我遇到的问题是errbot如何导入模块。它不是静态的,当我添加测试或者它们以不同的顺序测试时,它会破坏我的补丁装饰程序。你知道吗
我有一个叫EDB的插件(教育部). 内部教育部我用import pyedb
导入pyedb。它位于我的site-packages
。你知道吗
我有我的测试文件_教育部我试着像这样修补我的测试方法
pytest_plugins = ["errbot.backends.test"]
extra_plugin_dir = '.'
from unittest.mock import patch # noqa: E402
@patch('yapsy_loaded_plugin_EDB_1.pyedb', autospec=True)
def test_edb_testlist(pyedb_mock, testbot):
testbot.push_message('!edb testlist')
assert "Okay, let me get..." == testbot.pop_message()
assert "I don't see any..." == testbot.pop_message()
Errbot为模块导入添加了这个yapsy_loaded_plugin_EDB_<xx>
路径,但是xx取决于测试的运行顺序。这不起作用,我需要一些静态导入路径mypath.pyedb
。你知道吗
我希望有不同的方法来解决这个问题。也许我可以改变我导入模块的方式,这样它就不依赖于errbot导入了?你知道吗
这里有一个到Errbot testing的链接供参考。你知道吗
我的解决方案感觉有点老套,但很管用。如果有人有更优雅的解决方案,请分享。如果没有其他回应,我会在一段时间后接受我自己的回答。你知道吗
所以我以前也遇到过这种情况,但我想我还是不太熟悉Python中的修补工作,因为我知道在哪里修补。在阅读了“Where to patch”文档(再次:)之后,我有了一个解决方法,即使用errbot进行动态导入。你知道吗
errbot项目文件夹看起来
我注意到,当errbot运行项目目录
../errbot-project
和所有插件目录(例如../errbot-project/plugins/plugin1
)时,它们都被添加到sys.path
。你知道吗所以我在我的项目目录中添加了一个包,并将其导入到我的插件中。然后我就可以从这个包中可靠地修补依赖项了。再次阅读Where to Patch文档以获得完整的解释。看起来像这样。你知道吗
我的
../errbot-project/plugin_deps/__init__.py
看起来像然后在我的插件中我使用
最后我的测试代码看起来像
相关问题 更多 >
编程相关推荐