Vedro 通过其插件系统提供强大的可扩展性,使您能够创建强大的、可重用的解决方案,并可以在不同的项目和团队之间共享。但是,如果您只是试验代码库、构建概念原型或添加小调整怎么办?编写一个完整的插件可能感觉有点大材小用。这就是 vedro-hooks 发挥作用的地方。
vedro-hooks 是一个轻量级库,可让您将自定义挂钩附加到各种 Vedro 事件。无论您是在测试运行之前启动模拟服务器、启动浏览器进行端到端测试还是设置自定义日志记录,vedro-hooks 都可以让您以最少的样板代码注入功能。
一个实际的例子
假设您想要识别套件中的慢速测试 - 让我们将“慢速”定义为运行时间超过 1 秒的任何测试。传统上,您需要为此创建一个自定义插件。看起来可能是这样的:
from vedro.core import Dispatcher, Plugin, PluginConfig from vedro.events import ScenarioFailedEvent, ScenarioPassedEvent class SlowTestPlugin(Plugin): def subscribe(self, dispatcher: Dispatcher): dispatcher.listen(ScenarioPassedEvent, self.on_scenario_end) dispatcher.listen(ScenarioFailedEvent, self.on_scenario_end) def on_scenario_end(self, event: ScenarioPassedEvent | ScenarioFailedEvent): elapsed = event.scenario_result.elapsed if elapsed > 1.0: event.scenario_result.add_extra_details("⚠️ Slow test!") class SlowTestPluginConfig(PluginConfig): plugin = SlowTestPlugin
这种方法有效,但是创建一个成熟的插件需要更多的设置和额外的样板。它非常适合可重复使用的解决方案,但对于快速实验来说可能会感觉很麻烦。
使用 Hook 进行简化
使用 vedro-hooks,只需几行代码即可实现相同的功能:
from vedro_hooks import on_scenario_passed, on_scenario_failed @on_scenario_passed @on_scenario_failed def highlight_slow_tests(event): elapsed = event.scenario_result.elapsed if elapsed > 1.0: event.scenario_result.add_extra_details("⚠️ Slow test!")
此代码使用装饰器来注册一个函数,该函数将在场景通过或失败时调用。它会检查经过的时间,如果场景花费的时间超过 1 秒,则会添加额外的详细信息。
Scenarios * ✔ retrieve user info (0.52s) ✔ retrieve user repos (1.02s) |> ⚠️ Slow test! # 2 scenarios, 2 passed, 0 failed, 0 skipped (1.54s)
管理 Hook:缺点和解决方案
以这种方式使用钩子的一个缺点是它们可以从项目中的任何位置注册,这可能会使以后更难追踪它们。相比之下,Vedro 中的插件注册在 vedro.cfg.py 文件中,为所有插件配置提供集中位置。
为了帮助减轻在整个代码库中注册钩子的缺点,vedro-hooks 提供了 --hooks-show 命令行参数。启用后,测试过程完成后,将显示所有已注册挂钩的摘要及其源位置。这对于调试和验证哪些钩子处于活动状态非常有用。
Scenarios * ✔ retrieve user repos # [vedro-hooks] Hooks: # - 'highlight_slow_tests' (ScenarioFailedEvent) vedro.cfg.py:26 # - 'highlight_slow_tests' (ScenarioPassedEvent) vedro.cfg.py:26 # 1 scenario, 1 passed, 0 failed, 0 skipped (0.55s)
虽然 --hooks-show 很有帮助,但您需要记住在调试过程中使用它。最佳实践仍然是在像 vedro.cfg.py 这样的中心位置注册您的钩子,以保持插件配置的清晰度和一致性。
结论
vedro-hooks 是一个很棒的工具,可以增强您的 Vedro 测试,而无需创建自定义插件。当您需要一个快速、集中的解决方案来扩展功能时,它就会大放异彩。通过明智地使用它并保持配置井井有条,您可以享受两全其美:简单性和可维护性。
以上是韦德罗钩子的详细内容。更多信息请关注PHP中文网其他相关文章!

可以使用多种方法在Python中连接两个列表:1.使用 操作符,简单但在大列表中效率低;2.使用extend方法,效率高但会修改原列表;3.使用 =操作符,兼具效率和可读性;4.使用itertools.chain函数,内存效率高但需额外导入;5.使用列表解析,优雅但可能过于复杂。选择方法应根据代码上下文和需求。

有多种方法可以合并Python列表:1.使用 操作符,简单但对大列表不内存高效;2.使用extend方法,内存高效但会修改原列表;3.使用itertools.chain,适用于大数据集;4.使用*操作符,一行代码合并小到中型列表;5.使用numpy.concatenate,适用于大数据集和性能要求高的场景;6.使用append方法,适用于小列表但效率低。选择方法时需考虑列表大小和应用场景。

CompiledLanguagesOffersPeedAndSecurity,而interneterpretledlanguages provideeaseafuseanDoctability.1)commiledlanguageslikec arefasterandSecureButhOnderDevevelmendeclementCyclesclesclesclesclesclesclesclesclesclesclesclesclesclesclesclesclesclesandentency.2)cransportedeplatectentysenty

Python中,for循环用于遍历可迭代对象,while循环用于条件满足时重复执行操作。1)for循环示例:遍历列表并打印元素。2)while循环示例:猜数字游戏,直到猜对为止。掌握循环原理和优化技巧可提高代码效率和可靠性。

要将列表连接成字符串,Python中使用join()方法是最佳选择。1)使用join()方法将列表元素连接成字符串,如''.join(my_list)。2)对于包含数字的列表,先用map(str,numbers)转换为字符串再连接。3)可以使用生成器表达式进行复杂格式化,如','.join(f'({fruit})'forfruitinfruits)。4)处理混合数据类型时,使用map(str,mixed_list)确保所有元素可转换为字符串。5)对于大型列表,使用''.join(large_li

pythonuseshybridapprace,ComminingCompilationTobyTecoDeAndInterpretation.1)codeiscompiledtoplatform-Indepententbybytecode.2)bytecodeisisterpretedbybythepbybythepythonvirtualmachine,增强效率和通用性。

theKeyDifferencesBetnewpython's“ for”和“ for”和“ loopsare:1)” for“ loopsareIdealForiteringSequenceSquencesSorkNowniterations,而2)”,而“ loopsareBetterforConterContinuingUntilacTientInditionIntionismetismetistismetistwithOutpredefinedInedIterations.un

在Python中,可以通过多种方法连接列表并管理重复元素:1)使用 运算符或extend()方法可以保留所有重复元素;2)转换为集合再转回列表可以去除所有重复元素,但会丢失原有顺序;3)使用循环或列表推导式结合集合可以去除重复元素并保持原有顺序。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

SublimeText3 Linux新版
SublimeText3 Linux最新版

WebStorm Mac版
好用的JavaScript开发工具

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

SublimeText3汉化版
中文版,非常好用