Нечеткое совпадение в инструменте тестирования условного API каратэ - PullRequest
0 голосов
/ 13 декабря 2018

Мы недавно начали использовать Карате в качестве нашего интегрированного инструмента тестирования в проекте, который мы в настоящее время разрабатываем, и недавно я столкнулся с проблемой, о которой я хотел бы знать, почему это происходит.Давайте пройдем через это:

Одним из тестов, которые мы проводим во всех наших 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 

И в результате я получил: argRtime = 3000 false rTime = 500

Почему это условное ложь, если __arg.rTime не равно нулю?

Ответы [ 2 ]

0 голосов
/ 13 декабря 2018

Вы можете использовать нечеткие сопоставления в этой строке с karate.match из karate объекта следующим образом:

* def rTime = karate.match(__arg.rTime, '#notnull').pass ? __arg.rTime : MEDIUM_RESPONSE_TIME)
0 голосов
/ 13 декабря 2018

Полагаю, все встроенные карате нечеткие совпадающие маркеры работают только с match.

__arg.rTime == '#notnull'

- это простая оценка javascript, а не каратэ match, поэтому здесь RHS будетсчитаться строкой и оцениваться.

Однако

* match __arg.rTime == '#notnull'

будет работать отлично.

Но для вашей логики вы можете попробовать,

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

Нечеткий маркер каратэ должен использоваться только с match

...