Тестване, управлявано от данни с YAML в рамките на Java Script

Нека го поддържаме просто и лесно за боравене!

Какво представлява тестването, управлявано от данни?

Тъй като знаем какво е това, първо ще напомним какво е тестване, управлявано от данни. Ето какво казва guru99:

УПРАВЛЯВАНО ТЕСТВАНЕ ОТ ДАННИ е рамка за автоматизиране на тестване, която съхранява тестови данни във формат на таблица или електронна таблица. Това позволява на инженерите по автоматизация да имат един тестов скрипт, който може да изпълнява тестове за всички тестови данни в таблицата.

В тази рамка входните стойности се четат от файлове с данни и се съхраняват в променлива в тестови скриптове. Ddt (тестване, управлявано от данни) позволява изграждането на положителни и отрицателни тестови случаи в един тест.

В рамката за автоматизиране на тестове, управлявана от данни, входните данни могат да се съхраняват в един или множество източници на данни като xls, XML, csv и бази данни.

Както се казва точно, можем да съхраняваме данни в различни източници, както е споменато. В наши дни тестовите инженери обикновено използват JSON файлове за съхраняване на данни. Това е така, защото можем да изградим удобен за потребителя синтаксис в нашите тестови рамки. Json има много сериализатори/десериализатори за всички езици за програмиране. В Java Script, след като импортирате json файл, можете просто да получите достъп до данните чрез неговата йерархия. Проверете json по-долу:

Можете да получите достъп до данните на този файл като „User.Email“ & „User.Password“, няма нужда да пишете отделни четци и всички да четат данни, когато използвате json в Java Script. Доста лесно нали?

Но..

когато съхранявате данни в JSON файлове, както можете да видите, трябва да поставите правилно много кавички, къдрави скоби и запетаи. Ако пропуснете един.. О, хо.. ПРОБЛЕМА! Толкова просто, дори и да е лесен за четене, не е толкова лесно за потребителя да поставяте данни и да управлявате данни в JSON файл. Междувременно YAML излиза на сцената.

YAML - Yaml не е език за маркиране

Какво е YAML?

YAMLе удобен за хората стандарт за сериализиране на данни
за всички езици за програмиране. — yaml.org

Ако преминете през него, то е вярно на дефиницията си! Това е супер удобен за потребителя начин за съхранение и обработка на данни. Проверете следния фрагмент от YAML файл:

Доста просто, нали? Това е същият набор от данни, показан в JSON файл преди. Но проблемът е, че YAML файловете не могат да се четат, както правим в JSON файлове. Все още няма десериализатори за YAML за четене на данни, както в JSON.

Как да го използваме?

За повечето неща имаме заобиколни решения.. Да, сериозно, наистина го казвам! Има ли начин да конвертирате YAML в JSON в Java Script? Да, така е!

Добре.. Можем да конвертираме YAML в JSON и да четем данни от JSON.. Лесно като това. И така, това, което правим, е да записваме/съхраняваме данни в yaml файлове, тъй като е доста удобно за потребителя да го правим И да конвертираме YAML в JSON и да четем данни от JSON.

Може да мислите, че това е сложен начин и винаги трябва да правите нещо, за да конвертирате YAML в JSON и може да си помислите, че е като да поддържате два файла. Не е така. Можем да направим нещо подобно..

Във вашия тестов проект можете да напишете прост js скрипт за конвертиране на YAML в JSON, който ще създаде JSON файла на същото YAML местоположение. С моите думи наричам този скрипт „персонализиран инструмент“. Имайте предвид, че за да напишете това, първо трябва да инсталирате npm пакета js-yaml към вашия проект!Сега настройте наблюдател на файлове към вашата IDE, за да гледате промените в YAML файловете и го оставете да задейства този персонализиран инструмент, написан за конвертиране на YAML в JSON. Така че просто не е нужно да се притеснявате повече за това!

Ето примерен js скрипт за конвертиране на YAML в JSON:

var inputfile = 'cypress/support/keys.yml',
outputfile = 'cypress/support/keys.json',
yaml = require('js-yaml'),
fs = require('fs'),
obj = yaml.load(fs.readFileSync(inputfile, {encoding: 'utf-8'}));
fs.writeFileSync(outputfile, JSON.stringify(obj, null, 2));

Има много програми за наблюдение на файлове за IDE, изберете мъдро и ги конфигурирайте! Така че сега, когато пишете, тестовите скриптове импортират JSON файла и четат данните. Когато искате да промените тестови данни или да добавите/изтриете тестови данни, отворете YAML файла и го направете, запазете го. Няма проблем! Наблюдателят на файлове ще свърши останалото!

Нещо, което си струва да се спомене..

Нека вземем пример, при който един и същи набор от данни се дублира в различни възли като този:

LoginPage: 
 ContentElementOne:
  EmailField: .emailtext
  SubscribeButton: .subscribe
  ContentTitle: .title
  ContentSubtitle: .subtitle
HomePage: 
 ContentElementOne:
  EmailField: .emailtext
  SubscribeButton: .subscribe
  ContentTitle: .title
  ContentSubtitle: .subtitle
AboutPage: 
 ContentElementOne:
  EmailField: .emailtext
  SubscribeButton: .subscribe
  ContentTitle: .title
  ContentSubtitle: .subtitle

Сега, ако можете да видите, възлите под „ContentElementOne“ се повтарят и трябва да положите отделни усилия, за да ги напишете правилно.

В YAML има тази функция, наречена Псевдоним и препратказа опростяване на това. Това, което трябва да направите, е да създадете псевдоним с възлите под ContentElementOne. След това го насочете на всяко място, където трябва да го приложите.

ContentElementOne: &ContentElementControls
 EmailField: .emailtext
 SubscribeButton: .subscribe
 ContentTitle: .title
 ContentSubtitle: .subtitle
LoginPage: 
 ContentElementOne: *ContentElementControls
HomePage: 
 ContentElementOne: *ContentElementControls
AboutPage: 
 ContentElementOne: *ContentElementControls

Проверете горния YAML! С „&“ и име създадох псевдоним за възела ContentElementOne и посочих този възел с помощта на „*AliasName“. Ако преобразувате това в JSON, тези възли под ContentElementOne ще бъдат дублирани на всяко място, където е реферирано!

Готино! Това е просто, нали?

Така че това е всичко.. Опитайте и ме уведомете..