条件空手道中的模糊匹配 API 测试工具

Fuzzy Match in Conditional Karate API Testing Tool

我们最近开始使用空手道作为我们目前正在开发的项目的集成测试工具,我最近遇到了一个问题,我想知道为什么会这样。让我们来看看这个:

我们在所有 API 中进行的测试之一是响应时间。当我们开始创建测试时,我们已经创建了一系列可用于许多不同 API 测试的通用功能。这些功能之一是 testGetAll.feature,我们在其中作为参数发送一个端点、一个可选的参数列表、一个身份验证密钥和一个可选的响应时间。

在我们调用服务之前,我们有这个代码:

* def rTime = (__arg.rTime == '#notnull' ? __arg.rTime : MEDIUM_RESPONSE_TIME)

然后,为了测试它是否有效,我编写了以下内容:

* print "argRtime : " + __arg.rTime
* print __arg.rTime == '#notnull' 
* print "rTime : " + rTime 

结果我得到了: 参数时间 = 3000 错误的 rTime = 500

如果 __arg.rTime 不为空,为什么这个条件为假?

我想所有的空手道内置模糊匹配标记只适用于match

__arg.rTime == '#notnull'

是一个简单的javascript求值,不是空手道match,所以这里的RHS会被当做一个字符串来求值。

然而,

* match __arg.rTime == '#notnull'

将完美运行。

但是对于你的逻辑你可以试试,

* def rTime = ( __arg.rTime != null ? __arg.rTime : MEDIUM_RESPONSE_TIME)

Karate fuzzy matching marker should be only used with match

您可以在 the karate objectkarate.match 这一行中使用模糊匹配器,如下所示:

* def rTime = karate.match(__arg.rTime, '#notnull').pass ? __arg.rTime : MEDIUM_RESPONSE_TIME)