数据库无数据时如何终止场景?现有代码误终止含数据的构建
问题原因及修复方案
你的代码逻辑出错是因为误用了Karate的#notnull语法——它是断言专用关键字,不能直接拿来做变量相等性比较。
当数据库返回数据时,dbData是一个非空对象,但你写的dbData != '#notnull'是把dbData和字符串'#notnull'做比较,结果必然是true,所以不管有没有数据都会执行karate.abort(),导致构建终止。
正确写法有两种:
方式一:用karate.exists()判断对象是否存在
* def dbData = db.readRow("SELECT top 1 * FROM table where data = 'x'") * if (!karate.exists(dbData)) karate.abort()
方式二:直接判断是否为null
* def dbData = db.readRow("SELECT top 1 * FROM table where data = 'x'") * if (dbData == null) karate.abort()
这两种写法都能正确识别数据库是否返回数据:当无数据时dbData为null,触发abort跳过当前场景;有数据时则继续执行后续步骤。
内容的提问来源于stack exchange,提问作者TestingCodes
相关产品推荐
相关产品推荐

