Каратэ: вызов одного и того же файла объектов с несколькими путями URL - PullRequest
2 голосов
/ 13 апреля 2020

Мне нужно запустить тесты в файле объектов с несколькими URL-адресами конечных точек. Все тесты достигают конечных точек REST, и мне нужно выполнить несколько конечных точек для одних и тех же тестов. Я предложил два нижеприведенных рабочих решения, но у них обоих есть накладные расходы на обслуживание. Поэтому мне было интересно, есть ли лучшее решение.

1. Добавьте файл фиктивного объекта: Добавьте новый файл фиктивного объекта и вызовите фактический файл объекта с URL-адресом конечной точки в качестве аргумента, как показано ниже. Фактический файл объектов имеет тестовые данные 100 строк. Таким образом, когда это было выполнено индивидуально, отчет огурца показал 100 сценар ios, и было легко увидеть, сколько прошло / не прошло. Но при выполнении с файлом фиктивного объекта в отчете показан только 1 сценарий из файла фиктивного объекта и показаны все 100 тестовых примеров под ним.

  Scenario: Call actual feature file with internal URL
    * def params = { endpoint_url: 'internal' }
    * karate.callSingle('actualTestCases.feature', params);

  Scenario: Call actual feature file with public URL
    * def params = { endpoint_url: 'public' }
    * karate.callSingle('actualTestCases.feature', params);

2. Дублируйте строки тестовых данных и добавьте новый столбец endpoint_url: В тестовые данные добавьте дубликаты строк тестовых данных и добавьте столбец 'endpoint_url' со значениями, такими как 'internal', 'publi c'. Используйте данные этого столбца в фактическом файле объектов. Это накладные расходы, что тестовые данные должны быть дублированы. У меня более 3000 строк тестовых данных.

      |testcaseName|email|endpoint_url
      |"Valid Parameters"|["validtests@test.com"]|"internal"
      |"Valid Parameters"|["validtests@test.com"]|"public"

1 Ответ

0 голосов
/ 13 апреля 2020

Используйте 2 цикла или Scenario Outline:

Scenario Outline:
* call read('actualTestCases.feature')

Examples:
| endpoint_url |
| internal     |
| public       |

Обратите внимание, что endpoint_url будет видимым для "вызываемой" функции, поэтому вам не нужно беспокоиться о передаче параметров. На самом деле я думаю, что вы можете сделать все это в одном файле функций.

...