java - 在所有功能场景结束后执行 Cucumber hooks
问题描述
在黄瓜中执行功能后,我尝试执行一个脚本来清理数据库。我以以下方式使用 before 和 after 钩子:
private static boolean skipActions = false;
@Before("@initData")
public void setupData() throws Exception {
if (!skipActions) {
initData();
skipActions = true;
}
}
在此之前,我可以避免在每个场景之前使用静态变量调用脚本。但是没有弄清楚如何为 after 钩子做这件事:
@After("@clearData")
public void tearDown() throws Exception {
clearData();
}
有没有办法捕获最后一个场景是否已执行并仅在满足该条件时触发 clearData() ?有没有更优雅的方法呢?
解决方案
所以在 ruby 中有一个 at_exit 钩子。但这不是黄瓜,它是编程相关的。我会看看你的语言,看看这是否可能。
如果做不到这一点,您可以在运行失败次数期间存储一个类变量。那么如果所有这些都通过了,那么你可以做点什么。
你可以解决它的另一种方法是将你的执行工作包装在像詹金斯这样的东西中,詹金斯有很好的简单的开箱即用的清理方法。
在 Jenkinsfile 的声明性和脚本化管道中,都允许调用cleanWs()
groovy 语句,然后擦除整个 jenkins 节点。
推荐阅读
- angular - 无法在不更改字符串值的情况下将单个字符串推送到数组
- json - 以 json 格式将数据作为 http post 发送到外部 api
- javascript - JavaScript 将字符串转换为对象包含“:”
- svg - 如何在 svg 中使用剪辑路径而不解析错误?
- delimiter - 带分隔符的字符串的 PCRE 正则表达式
- java - 使用数据库输入主从数据的java表单
- dart - 将字符串列表转换为 int Dart 列表
- firebase - 使用 Cloud Functions/Admin SDK 在 Google Firestore 和 Google 表格之间同步数据
- veracrypt - Veracrypt 设备未准备好
- python - Pandas Dataframe 中的高效搜索