空手道API测试-从响应中删除重复的值,并将其与新响应进行比较

时间:2018-10-29 10:50:58

标签: karate

在一种情况下,我会收到重复的值。

 /* IF YOUR ADDRESS ARE ALWAYS START WITH DOOR NO, YOU CAN USE FOLLOWING FUNCTION
    TO GET DOOR NO /*

  CREATE TABLE DEMO
  (
        ID INT NOT NULL,
        ADDRESS VARCHAR(100)
  );

   INSERT DEMO
   VALUES(112, '120 westminister way Road, London (NW10 5NQ)');

   SELECT DBO.DOORSnO(112) AS "DOOR NO"

   -- The Functions are
   CREATE FUNCTION DOORSnO(@ID INT)
   RETURNS VARCHAR(10)
   AS
   BEGIN
   DECLARE @ADDRESS AS VARCHAR(100)
   DECLARE @I AS INT = 1
    DECLARE @DOORS AS VARCHAR(10) =''

    SET @ADDRESS = (SELECT ADDRESS FROM DEMO WHERE ID = @ID)

    WHILE SUBSTRING(@ADDRESS, @I, 1) <> ' '
    BEGIN
        SET @DOORS += SUBSTRING(@ADDRESS, @I, 1)    
        SET @I = @I +1
    END
    RETURN @DOORS
   END

并打印abcName

And def abcName =  $ListDataSet_Response.rowData[*].4

现在我有一个功能,其中使用不同的值查询,我可以获得没有重复值的响应。执行该操作后。新响应为:

 [
 "BP Part Sht NCA MS",
  "BP Part Sht NCA MS",
  "BP Part Sht NCA MS",
  "BP Part Sht NCA MS",
  "BP Part Sht NCA MS",
  "Bay Pond USB, Inc MS",
  "Bay Pond USB, Inc MS",
  "BP USB III Inc MS",
  "BP USB III Inc MS",
  "BP USB III Inc MS",
  "BP USB III Inc MS",
  "BP CS Sht NCA",
  "BP CS Sht NCA",
  "BP CS Sht NCA",
  "BP CS Sht NCA", 
  "BP USB IV, Inc MS",
  "BP Mrts Block NCA MS",
  "BP Mrts Block NCA MS"

  ]

现在,我需要在早先验证此响应的同时牢记,如果我从第一个响应中删除重复的值,那将是我的新响应(从不同的值查询中接收到)。

所有这些值都是运行时和动态的。

到目前为止,我的方法:

第一:

  1. 将abcName存储在集合中(Java)。它将删除重复项。
  2. 现在将其与新响应进行比较。

    这是不可行的,因为两者都是不同的类型。

    第二:

  3. 将abcName存储在集合(Java)中

  4. 将第二个响应存储在另一个集合中(这将违背目的,因为它应该采用集合格式)

    第三:

  5. 将abcName存储在集合(Java)中

  6. 将此集转换为列表:失败
  7. 将第二个响应存储在列表中
  8. 现在比较这两个列表

    空手道有什么办法可以在不使用Java的情况下完成这项活动?

2 个答案:

答案 0 :(得分:1)

http://awesome.scot

答案 1 :(得分:1)

对于遇到此问题的任何人,在 1.0+ 中,上述答案不再有效 - 您现在需要在将其转换为 HashSet 之前使用 karate.toJava(),即:

{{1}}