编写python setuptools入口点插件

时间:2017-12-04 01:59:50

标签: python plugins testng setuptools

我构建了一个定义setuptools入口点的python应用程序(“主机”应用程序),以便可以扩展它。插件作者然后必须将以下内容添加到他们的setup.py文件中:

setup(
    # ...
    entry_points = {
        'myapp.plugins': 
        ['plugin_1 = <foo.plugin.module>:<plugin-install-func>']
    }
)

为了测试我的设置,我必须

  • 构建一个虚拟轮包,
  • 使用pip进行安装,
  • 将新包的文件夹附加到sys.path并调用pkg_resources.working_set.add_entry(package_dir) [*],
  • 只有这样我才能检查预期的行为(运行TC),
  • 使用pip卸载软件包,
  • 最后从sys.path
  • 中删除已安装的软件包文件夹

如果必须验证不同的功能,则每个测试用例都需要一个单独的包 整个测试装置相当冗长和笨拙。

是否有更优雅的方法为setuptools 入口点插件编写测试用例?

[*]注意:使用pip install -e <plugin-package>开发模式中安装 wheel 或使用pip *不会在同一个解释器上激活插件 Linux ;或者至少在没有追加sys.path中的包文件夹之后。   在 Windows 上,上述问题仅存在于开发模式

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,并通过一个肮脏的黑客来解决,以构建和“pip install”插件包进行测试,进入 tox 的环境并在该环境中运行测试。