如何在Cucumber中为带@no_cleanup标签的场景跳过全局After钩子?
实现带标签跳过清理的After钩子
当然可以实现你的需求!只需要给After钩子加个标签判断逻辑就行——检查当前场景有没有@no_cleanup标签,有就跳过清理,没有就正常执行原有的删除操作。
修改后的代码是这样的:
After do |scenario| # 仅当场景不带@no_cleanup标签时,才清理临时文件 unless scenario.tags.any? { |tag| tag.name == '@no_cleanup' } FileUtils.rm_f(Dir.glob(File.join @local_dir, '*')) end end
简单解释下:
- 给After钩子传入
scenario参数,这样就能拿到当前场景的所有标签信息 - 用
scenario.tags遍历场景标签,检查是否存在@no_cleanup这个标签 - 如果不存在该标签,就执行原本的清理代码;如果存在,直接跳过这一步
这样设置后,所有标记了@no_cleanup的场景结束后都不会删除临时文件,其他场景依然保持自动清理的逻辑,完美匹配你的需求~
内容的提问来源于stack exchange,提问作者centuryfall
相关产品推荐
相关产品推荐

