julia_v_iluhina

Untitled

Jan 8th, 2017
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.69 KB | None | 0 0
  1. public class QACourseAutomationTest {
  2. /*
  3.     тут более уместно - описать - что мы тестируем
  4.     TodoMVCTest - более точный вариант, описывающий что мы тестим
  5. */
  6.  
  7.     @Test
  8.     public void createDeleteComplete() {
  9.     /*
  10.         мы тут еще тестируем CompleteAll & Clear completed
  11.         длинновато получится, если все это перечислять
  12.  
  13.         в таких случаях - применяй вот такой прием
  14.         https://docs.google.com/document/d/10qSwWTQ6pGfVZSwOes-1QSmdflMiGD2U_y53VHq2m20/edit#bookmark=id.txqig9rkgybo
  15.  
  16.         tasksLifeCycle, tasksCommonFlow - вот такие варианты для нашей ситуации лучше
  17.         указали - что работаем с тасками и покрываем несколько разных операций
  18.     */
  19.  
  20.         open("http://todomvc.com/examples/troopjs_require/#/");
  21.  
  22.         //Start of creating tasks (1-4)
  23.         $(".new-todo").setValue("task1").pressEnter();
  24.         $(".new-todo").setValue("task2").pressEnter();
  25.         $(".new-todo").setValue("task3").pressEnter();
  26.         $(".new-todo").setValue("task4").pressEnter();
  27.  
  28.         //Checking that elements was created
  29.         $$(".todo-list li").shouldHave(CollectionCondition.exactTexts("task1", "task2", "task3", "task4"));
  30.         /*
  31.             поскольку код - вполне ясен - в данном случае - я бы не стала комментировать код
  32.  
  33.             также - советую использовать import static для CollectionCondition.exactTexts
  34.             should-методы коллекции - именно кондишен типа CollectionCondition принимают
  35.             потому - мы без потери точности можем писать
  36.             $$(".todo-list li").shouldHave(exactTexts("task1", "task2", "task3", "task4"));
  37.  
  38.             если мы можем написать код лаконичнее без потери точности - чтоит это сделать
  39.             т к - так проще и нагляднее получится
  40.  
  41.             касается и других случаев использования кондшенов - как CollectionCondition так и Condition
  42.             использование import static  для таких случаев - вполне ок решение
  43.         */
  44.  
  45.         //Deleting task 2 (5)
  46.         $$(".todo-list li").findBy(Condition.exactText("task2")).hover().$(".destroy").click();
  47.         //Check if task2 exist
  48.         $$(".todo-list li").findBy(Condition.exactText("task2")).shouldNot(Condition.exist);
  49.         /*
  50.             а вот эта проверка - не очень хороша
  51.             т к проверяет - лишь отсутствие таски 2
  52.  
  53.             а ведь могут быть и другие ошибки
  54.             например - удаляли таску 2, но уалились несколько тасок
  55.             так что - правильнее было проверить тексты всех тасок
  56.         */
  57.  
  58.         //Marking task 4 as completed (6)
  59.         $$(".todo-list li").findBy(Condition.exactText("task4")).$(".toggle").click();
  60.         //Check if task for is comleted
  61.         $$(".todo-list li completed").findBy(Condition.exactText("task4"));
  62.         /*
  63.             $$(".todo-list li completed") - обрати внимание что по такому селектору мы найдем - http://joxi.ru/n2YkKaGUoog3nr
  64.             ничего не найдем )
  65.  
  66.             посмотри - что значит пробел в css селекторе
  67.             и как искать элементы по их классу
  68.             http://www.w3schools.com/cssref/css_selectors.asp
  69.  
  70.             но - в общем - направление верное
  71.             получить коллекцию закомпличеных тасок и проверить их
  72.  
  73.             только вот $$(...).findBy(...); - ничего не проверяет
  74.             мы просто - описали - как получить некий элемент коллекции
  75.             не более
  76.             мы с этим элементом - ничего не делали и не проверяли
  77.             потому и ошибки не было никакой
  78.  
  79.             по хорошему - нужно получить коллекцию закомпличеных тасок и выполнить ее проверку
  80.             как писала ранее -  проверка текстов элементов коллекции - наиболее точный и полезный вариант
  81.  
  82.             про эту проверку еще будем и позже говорить
  83.             но вот в данный момент - такой вариант - будет самым разумным
  84.         */
  85.  
  86.         //Clearing completed (7)
  87.         $(".clear-completed").click();
  88.         //Check if task4 exist
  89.         $$(".todo-list li").findBy(Condition.exactText("task4")).shouldNot(Condition.exist);
  90.         /*
  91.             тут - то же самое
  92.             лучше - проверить состояние всей коллекции $$(".todo-list li")
  93.         */
  94.  
  95.         //Mark all as completed (8)
  96.         $(".toggle-all").click();
  97.         //Check if task3 and task1 completed
  98.         $$(".todo-list li completed").findBy(Condition.exactText("task3").exactText("task1"));
  99.         /*
  100.             очень странный код у проверки)
  101.             $$(".todo-list li completed") - писала выше про недостатки у селектора
  102.  
  103.             findBy - согласно переданного ему кондишена ищет один элемент коллекции
  104.             как думаешь, что бы мы нашли таким образом, даже если бы коллекцию верно получили?
  105.  
  106.             и тут тоже
  107.             получи поллекцию закомпличеных тасок
  108.             и проверь ее
  109.             вариант $$(....).shouldHave(exactTexts(......)) - проверит тестовую ситуацию наиболее точно
  110.             будет проверена вся коллекция, количество ее элементов, тексты и их порядок
  111.         */
  112.  
  113.         //Clear remaining completed tasks (9)
  114.         $(".clear-completed").click();
  115.         // Checking if main class is visible, it has all code of todo-list and active only when there is some tasks
  116.         $(".main").shouldNotBe(Condition.visible);
  117.         /*
  118.             нам ни к чему вводить еще один независимый селектор
  119.             мы вполне можем проверить - что наша коллекция $$(".todo-list li") - пуста
  120.             этого будет достаточно
  121.            
  122.             наша цель - проверить логику работы приложения
  123.             вот мы удалили таски
  124.             и проверяем - тасок в списке нету
  125.             логику ме проверили
  126.            
  127.             в следующем видео - будет о том, почему стоит состредоточиться именно на функциональных проверках
  128.         */
  129.     }
  130.  
  131. }
Advertisement
Add Comment
Please, Sign In to add comment