julia_v_iluhina

Untitled

Dec 5th, 2016
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.03 KB | None | 0 0
  1.     public void openSearchAndAssertResults(String link, String searchQuery) {
  2. /*
  3.     уже обсуждали это на курсе
  4.  
  5.     не нужно в одном вспомогательном методе объединять действия и проверки
  6.     и также - не нужно в одном вспомогательном методе объединять несколько независимых друг от друга действий
  7.  
  8.     open - отдельное независимое действие
  9.  
  10.     Search - тоже
  11.  
  12.      проверка количества результатов - одна проверка
  13.  
  14.      проверка текста такой-то таски - другая
  15.  
  16.      все эти вещи - не нужно объединять вот в такой блок
  17.  
  18.      во-первых - это скрывает тестовую логику
  19.  
  20.      во-вторых - нам такой блок целиком - не нужен для переиспользования
  21.  
  22.      мы это обсуждали с тобой в слеке сегодня
  23.      и еще ниже поясню
  24.  
  25.      такого метода - быть не должно
  26. */
  27. ******************************************
  28.     @Test
  29.     public void searchAndFollowLink() {
  30.  
  31.         driver.get("http://google.com");
  32.         /*
  33.             открывать этот урл - нужно в обоих тест-методах
  34.             реализуй open(....)
  35.             и переиспользуй в обоих тест-методах
  36.         */
  37.  
  38.         driver.findElement(By.name("q")).clear();
  39.         driver.findElement(By.name("q")).sendKeys("Selenium automates browsers" + Keys.ENTER);
  40.         /*
  41.             и этот блок кода - тебе понадобится в обоих тест-методах
  42.             реализуй метод search(...)
  43.             и переиспользуй в обоих тест-методах
  44.         */
  45.  
  46.         wait.until(sizeOf(results, 10));
  47.         /*
  48.             проверка размера списка - нужна только в этом тест-методе
  49.             можно ее в свой метод не прятать даже
  50.         */
  51.  
  52.         (wait).until(textToBePresentInElementLocated(results, "Selenium automates browsers"));
  53.         /*
  54.             проверка текста самого первого результата - нужна только в этом тест-методе
  55.             тоже нету смысла реализовывать метод для нее
  56.  
  57.             напоминаю - (wait) - скобки лишние
  58.         */
  59.  
  60.         followLink(0);
  61.         /*
  62.             верно, тут нужен вспомогательный метод, согласна
  63.         */
  64.         (wait).until(urlToBe("http://www.seleniumhq.org/"));
  65.         /*
  66.             эта проверка  - достаточно лаконична
  67.             хоть она и понадобится в обоих тест-методах - не знаю, стоит ли реализовывать метод для нее
  68.             я бы не стала
  69.  
  70.             (wait) - скобки лишние
  71.         */
  72.     }
  73. /*
  74.     к коду этого метода - вопросов нет
  75.  
  76.     разве что - те действия, которые будут нужны в обоих тест-методах - реализовать как вспомогательные методы
  77.     и тут использовать
  78.  
  79.     но в целом - с этим тест-методом - все ок
  80.  
  81.     как я и писала в слеке - тут у нас вот такая последовательность
  82.         предварительные действия = открыли урл
  83.         первое тестовое действие - поиск
  84.         проверки после поиска
  85.         второе тестовое = followLink
  86.         проверка после followLink
  87. */
  88. *************************************
  89.     @Test
  90.     public void followResultLink() {
  91.     /*
  92.         если выше применяешь термин followLink - то и тут также применяй
  93.  
  94.         согласна - получается путаница - и тест-метод - followLink (правда, без параметров)
  95.         и вспомогательный метод - followLink
  96.         неаккуратненько
  97.  
  98.         тоже писала в слеке про это
  99.         назови оба тест-метода начиная с test
  100.  
  101.         тогда будет определенность -
  102.             testFollowLink = тест-метод
  103.             followLink = вспомогательный метод
  104.  
  105.         и не надо для одного действия followLink - использовать 2 разных термина (followLink и followResultLink)
  106.         что тоже важно
  107.  
  108.         что мы должны сделать в этом тест-методе
  109.         тоже было в слеке
  110.             предварительные действия = открыли урл + поиск
  111.             тестовое действие = followLink
  112.             проверки после followLink
  113.  
  114.         напоминаю - после предварительных действий - мы не должны делать никаких проверок
  115.         вспомни свою работу по Smoke+F - перечитай ревью
  116.  
  117.         а мы что сделали - вызвав openSearchAndAssertResults
  118.         спрятали тестовую логику  и сделали проверки, которые в данном случае - не нужны
  119.         ведь мы не тестируем поиск в этом тест-методе, а используем его в рамках предварительных действий
  120.     */
  121.         openSearchAndAssertResults("http://google.com", "Selenium automates browsers");
  122.  
  123.         followLink(0);
  124.         /*
  125.             конечно, когда уйдут проверки после search - тест на followLink(0); начнет падать
  126.  
  127.             потому что - на этот момент еще не догрузился список результатов
  128.  
  129.             в тесте searchAndFollowLink() - такого не было - т к перез вызовом followLink(0)
  130.             были проверки, гарантирующие - что если мы дошли до followLink(0) - то уже есть загруженный список результатов поиска
  131.  
  132.             получается - followLink(0) - зависит от контекста вызова
  133.             а нам нужно - уйти от этой зависимости
  134.  
  135.             чтобы followLink(0) сам был умным и дожидался момента, когда можно будет кликнуть на главной линке н-ого результата
  136.             т е - проверка должна быть внутри followLink и выполнять функцию умного ожидателя правильной тестовой ситуации
  137.             давай разберемся - чего правильно ждать
  138.             если нам нужно кликнуть на элементе с индексом 5
  139.             то нам нужно - чтобы элементов в списке было как минимум 5+1 (т к индексы - с нуля идут)
  140.  
  141.             и вот для такой проверки - как раз нужен кондишен - minimumSizeOf
  142.             реализуй кондишен
  143.             встрой в followLink - ждущую проверку
  144.  
  145.             и тогда и этот тест-метод будет работать корректно
  146.         */
Advertisement
Add Comment
Please, Sign In to add comment