julia_v_iluhina

Untitled

Nov 23rd, 2016
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.88 KB | None | 0 0
  1. public class GoogleSearchTest {
  2.  
  3.     @Test
  4.     public void searchTextAndAsserResults() {
  5.     /*
  6.         searchAndFollowLink - будет точнее)
  7.     */
  8.  
  9.         open("https://google.com/");
  10.  
  11.         searchField("Selenium automates browsers");
  12.         /*
  13.             просто search - точнее отражает то, что  мы делаем
  14.         */
  15.  
  16.         assertSearchResults(10);
  17.         /*
  18.             а тут - assertResultsCount(10) -  тоже было бы точнее
  19.  
  20.             про Search - я бы уже не уточнялась - т к название тест-класса + тест-метода
  21.         */
  22.  
  23.         assertSearchResults(0, "Selenium automates browsers");
  24.         /*
  25.             тут проверяем - не результатЫ
  26.             а результат
  27.  
  28.             assertResult - будет ок
  29.  
  30.  
  31.         */
  32.  
  33.         followLink(0);
  34.  
  35.         /*
  36.  
  37.             а где проверка?
  38.  
  39.             мы перешли по линке
  40.             и?
  41.  
  42.             уже тест прошел - если тест не упал на followLink(0);
  43.             даже если открывшаяся страница будет другой - этот тест прошел
  44.  
  45.             да и нам нужен был е2е - один тест-метод
  46.         */
  47.     }
  48.  
  49.     @Test
  50.     public void assertSeleniumOfficialPage() {
  51.         $("#sidebar>p>strong").shouldHave(exactText("Selenium is a suite of tools"));
  52.         Assert.assertEquals("http://docs.seleniumhq.org/", url());
  53.     }
  54.     /*
  55.         эти проверки - делай не как отдельный тест-метод
  56.         а как часть одного тест-метода
  57.  
  58.         в jUnit - не гарантируется порядок запуска тест-методов
  59.         да и это хорошо и правильно
  60.  
  61.         думаю, пояснения выше - уже прояснили немного - почему плохо делать етст-методы зависимыми
  62.         разрывать действия и проверки на разные тест-методы - вообще не стоит
  63.         тест = и действие и его проверка
  64.  
  65.         JUnit  - реализован так, что порядок запуска тест-методов - случаен
  66.             https://github.com/junit-team/junit4/wiki/test-execution-order
  67.  
  68.             можно конечно - и задать порядок запуска
  69.             но - это bad practice - т к это  - не эффективно, да и ненадежно
  70.  
  71.             https://youtu.be/yyzGP2CyMRM
  72.             вот это видео Николая Алименкова - советую смотреть и пересматривать
  73.     */
  74.  
  75. }
  76.  
  77. *************************************
  78. public class GoogleSearchPage {
  79. /*
  80.     что делаем
  81.     делаем пейдж-модуль
  82.  
  83.     вспомни  - как употребляли Page в имени класса пейджа модуля
  84. */
  85.  
  86. public static ElementsCollection searchResults = $$(".g");
  87. /*
  88.     .srg>.g - так точнее
  89.     может конечно тебе повезло
  90.     и по твоему локатору - как раз было 10 результатов
  91.  
  92.     но когда помимо 10 результатов поиска google еще что-то выдает - то селектора ".g" не хватит
  93.  
  94.     уже имя пейда говорит - что речь про гугл-поиск
  95.  
  96.     слово search - во многих случаях уже лишнее уточнение
  97.     и для этого поля
  98.     и для многих методов этого пейджа
  99.  
  100.     за исключением метода search конечно)
  101. */
  102. **********************************
  103.     public static void searchField(String qField) {
  104.         $("#lst-ib").setValue(qField).pressEnter();
  105.     }
  106. /*
  107.     про имя метода - уже писала
  108.     что делаем = ищем =search
  109.  
  110.     Field - ничего полезного не уточняет
  111.  
  112.     имя параметра - значение - по чему ищем
  113.     и это не qField
  114.     а query, queryText
  115.  
  116.     для поля есть селектор понагляднее
  117.     обрати внимание на name этого поля
  118.     так во многих гугловских проектах сможешь поле поиска найти
  119.  
  120. */
  121. ******************************
  122.     public static void assertSearchResults(int resultIndex, String textResult) {
  123.         searchResults.get(resultIndex).$(".st>em").shouldHave(exactText(textResult));
  124.     }
  125. /*
  126.     в имени меода - лишнее слово Search - уже сказали на уровне имени класса
  127.     в именах параметров - result - уже сказали на уровне имени метода
  128.     лишние слова - тоже вредно
  129.  
  130.     тут не нужно уточняться до $(".st>em")
  131.  
  132.     достаточно проверить что в текст такого-то результата входит такой-то текст
  133.     т е - использовать менее строгий кондишен
  134.  
  135.     кондишена text - хватит, и уточнений меньше
  136. */
  137. ***********************************
  138. public static void assertSeleniumOfficialPage() {
  139. /*
  140.     как так вышло - что этот метод остался в пейдже?
  141.     и при этом - появился отдельный тест-метод с таким кодом...
  142.    
  143.     если тут что-то не ясно - лучше бы все моменты уточнить
  144.     обращайся в слеке
  145. */
Advertisement
Add Comment
Please, Sign In to add comment