为python setuptools入口点插件编写测试用例

ank*_*tis 6 python plugins testng setuptools

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

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

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

  • 建立一个假的车轮包装,
  • 用于pip安装它,
  • 将新软件包的文件夹附加到sys.path并调用pkg_resources.working_set.add_entry(package_dir)[*],
  • 只有这样我才能检查预期的行为(运行TC),
  • 用于pip卸载软件包,以及
  • 最后取出从已安装的包的文件夹sys.path

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

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

[*]注:安装轮子或使用PIP *在发展模式pip install -e <plugin-package>不会激活插件在同一个翻译的Linux ; 或至少没有在之后附加package文件夹sys.path。在Windows上,以上问题仅在开发模式下存在。

Sat*_*TOH 1

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