Могут ли управляемые данными тесты в TestCafe, использующие JSON, работать с JSON, имеющим несколько атрибутов для каждого теста? - PullRequest
0 голосов
/ 31 января 2020

У меня есть множество тестов на основе данных, уже написанных в testcafe до сих пор на основе этого примера.

https://devexpress.github.io/testcafe/documentation/recipes/create-data-driven-tests.html

Кто-нибудь пытался сделать JSON тест на основе данных с testcafe с файлом JSON, как в примере ниже?

[
       {
            "testcasename": "Check for Rate Classes -1",
            "rateclasses": "{
                   "classname": "SC",
                   "classvalue": 1
             }
        },

]

Этот код я использую для перебора файла JSON. Теперь моя дилемма: может ли быть написана многоуровневая подпрограмма набора данных?

dataSet.forEach(userdata => {
    test(`Enter '${userdata.testcasename}'`, async t => {
        my code here
    });
});

Будет ли это выглядеть так:

dataSet.forEach(userdata => {
    test(`Enter '${userdata.testcasename}'`, async t => {
              some code here for the 1st level attributes
               dataSet.forEach(userdatasubattributes => {
                some code here for the repeating attributes for each test case
                }

       });
});

Любые указатели будут полезны.

ОБНОВЛЕНИЕ

обнаружил, что конструкция должна работать так:

[
       {
            "testcasename": "Check for Rate Classes -1",
            "rateclasses": " [
             {
                   "classname": "SC",
                   "classvalue": 1
             }
          ] 
        }
]

Ответы [ 2 ]

1 голос
/ 31 января 2020

Вам необходимо использовать правильный JSON синтаксис для ваших тестов с многоуровневыми данными, который установлен, как вы упомянули в разделе ОБНОВЛЕНИЕ.

Вы также можете использовать JSON .stringify метод, чтобы увидеть, как ваши существующие объекты преобразуются в формат JSON.

0 голосов
/ 05 февраля 2020

Вот как я решил проблему:

dataSet.forEach(userdata => {
        test(`Enter '${userdata.testcasename}'`, async t => {  
            for(let i = 0, l = userdata.rateclasses.length; i < l; i++) {
                console.log ("Class Name", userdata.rateclasses[i].classname) 
                console.log ("Class Value", userdata.rateclasses[i].classvalue) 

            }
        });
    });
...