【问题标题】:Testing a entry_point contribution测试 entry_point 贡献
【发布时间】:2021-04-27 00:00:39
【问题描述】:

我正在编写一个 Python 模块,它指定了一组入口点,因此其他主机模块可以发现一个新功能。我正在遵循official documentation 指定的 setuptools 方法。

例如,下面的 sn-p 显示了通过名为 hello-world 的 sample.contribution 的贡献,它指向 timmins.hello_world 属性。

[options.entry_points]
sample.contribution =
    hello-world = timmins:hello_world

假设主机插件定义了一个类似下面的方法来加载 sample.contributions 扩展。

def load_contributions():
   ...

我想做的是编写一个测试,以确保主机模块正确加载 entry_point。目前,测试这种入口点加载的唯一方法是通过构建一个轮子并 pip-install 它。安装好之后就可以成功加载entry_point了。

所以,我的问题是......有没有办法在 setup.py(或 setup.cfg)中添加指定的 entry_points,以便在测试执行期间加载它们?即对定义 entry_point 的模块进行测试,调用load_contributions 方法时返回贡献

【问题讨论】:

  • 不确定是否值得测试。如果是我,我会假设它已经在 setuptools 中进行了测试。 -- 这让我觉得也许值得看看 setuptools 自己的代码库和测试套件,看看他们如何测试这些东西并从中汲取灵感。
  • 测试插件是否正确实现了主机定义的扩展点不是很有趣吗?我认为在进入生产环境而不加载插件之前对其进行测试是值得的。
  • 啊,我想我误解了这个问题。是的,您可以使用 tox,因为它总是在运行命令(测试套件)之前正确安装项目。因此,如果安装正确,那么入口点肯定也应该可用。
  • @josandres,我也有同样的问题。您找到解决方案了吗?
  • @AshokRayal 使用 tox 进行攻击。您可以定义自定义 testenv,其中可以安装主机库和扩展插件。至少对我有用:D

标签: python testing setuptools entry-point


【解决方案1】:

也许使用tox 执行一组测试命令是正确的选择。 这种方法将开发的模块安装到虚拟环境中,因此在调用命令时会加载其 entry_points。

【讨论】:

    猜你喜欢
    • 2019-01-23
    • 1970-01-01
    • 2017-03-03
    • 2011-09-13
    • 2011-08-15
    • 2010-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多