julia_v_iluhina

Untitled

Nov 26th, 2016
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.44 KB | None | 0 0
  1.     public static void logon(String email, String passw){
  2.     /*
  3.         не сокращай слова - в именах параметров/переменных/методов/классов/...
  4.         если сокращения - то какие-то общепринятые только
  5.  
  6.         password - лучше
  7.  
  8.         имя метода - мне кажется все же login )
  9.     */
  10. *******************************************************************
  11.     public static void openInbox(){
  12.     public static void openSentFolder() {
  13. /*
  14.     советую по Title искать элементы
  15.     так будет точнее
  16. */
  17. ********************************
  18. public class BaseTest {
  19.     {
  20.         Configuration.timeout = 20000;
  21.         Configuration.browser = "chrome";
  22.         System.setProperty("webdriver.chrome.driver", "D:\\chromedriver.exe");
  23.     }
  24.  /*
  25.     все кроме  Configuration.timeout = 20000; - универсально
  26.  
  27.     а  Configuration.timeout = 20000; - именно для gmail-теста нужно
  28.     я бы из этих соображения - строку  Configuration.timeout = 20000;
  29.     все же в тест-классе непосредственно держала
  30.  
  31.     т к - общее - в предке, а уточненное, нужное только в конкретном тест-классе - уже в конкретном тест-классе
  32.  
  33.     если б было несколько тест-классов - может и твое решение было ок )
  34.  */
  35. ********************************************************
  36.  public class GMailTest extends BaseTest{
  37.      @Test
  38.      public void testGmail() {
  39.  /*
  40.     testGmail - мы ничего не уточнили  - имя тест-класса то же самое говорит
  41.  
  42.     тут уже про Gmail можно не писать
  43.  
  44.     мы тут тестим login, send, receive, search - можно так имя тест-метода и составить
  45.     testLoginSendReceiveAndSearch
  46.  
  47.     а можно воспользоваться советами для е2е тестов (см faq)
  48.  
  49.  */
  50.          open("https://gmail.com");
  51.          logon("zfedorovska","Rom");
  52.          /*
  53.             вынеси тестовые данные - логин + пароль
  54.             в отдельный класс
  55.             перечитай задание
  56.  
  57.             в тест-методе - будешь просто использовать данные из этого класса с тестовыми данными
  58.             ниже приведу советы по структуре проекта - тоже учти моменты
  59.  
  60.             еще - в качестве логина - можно использовать полный email
  61.             он тебе и дальше пригодится)
  62.          */
  63.          sendMail("[email protected]","Life is good");
  64.          /*
  65.             запусти дважды тест
  66.             он упадет)
  67.  
  68.             т к уже будет 2 письма  с таким subject
  69.  
  70.             выход - использовать в каждом запуске тест-метода - уникальный subject
  71.             например - добавь к тексту - что-то уникальное - дату-время в миллисекундах
  72.          */
  73.          emails.get(0).shouldHave(text("Life is good"));
  74.          /*
  75.             перед этой проверкой надо бы еще на кнопку refresh нажать
  76.             т к может не хватить таймаута - для получения письма
  77.             а так - принудительно получишь почту
  78.             и проверишь - получили ли письмо
  79.            
  80.             http://joxi.ru/V2VBQLqf05vL92
  81.            
  82.             сама проверка - ок
  83.             реализуй метод в пейдже
  84.          */
  85.          ...
  86.          search("Life is good");
  87.          emails.shouldHaveSize(1);
  88.          /*
  89.             тут мало проверить размер списка
  90.             на еще важно - что в этом мейле - нужный нам текст
  91.            
  92.             а раз нам важен  и размер списка и тексты -
  93.             давай вспомним - как для todoMVC - мы одним махом это проверяли
  94.             используя проверку assertTasks
  95.             тут - можно похожую проверку реализовать
  96.             единственное - что exactTexts нам не подойдет
  97.             а вот texts - подойдет
  98.             тоже - будет проверено - и размер и порядок и тексты
  99.             но тексты = по вхождению                                                          
  100.          */
  101.      }
  102. ***************************************************
  103. /*    
  104.     Тут это, конечно, немного за уши притянуто
  105.             Просто попробуем разделить функционал на несколько пейджей, чтоб понять,
  106.             как это использовать и как оформлять код, когда используем несколько пейджей
  107.  
  108.             Ниже приведу код, когда используется несколько пейдж модулей
  109.             обрати внимание на
  110.                 названия самих методов
  111.  
  112.                 статик импорт не используем, в коде уточняем имя пейджа -
  113.                 это детализирует смысл вызова
  114.                 и когда методов в каждом из пейджей реально много -
  115.                 такой способ вызова позволяет легче ориентироваться в коде
  116.  
  117.                     Gmail.visit();
  118.  
  119.                     Gmail.logIn(TestData.email, TestData.password);
  120.  
  121.                     Mails.send(TestData.email, subject);
  122.  
  123.                     Menu.refresh();
  124.                     Mails.assertMail(0,subject);
  125.  
  126.                     Menu.goToSent();
  127.                     Mails.assertMail(0,subject);
  128.  
  129.                     Menu.goToInbox();
  130.                     Mails.searchBySubject(subject);
  131.  
  132.                     Mails.assertMails(subject);
  133. */
  134. **************************************
  135. /*
  136.  
  137.     http://joxi.ru/nAyqEx7HXvxQoA
  138.    
  139.    
  140.     вот пример хорошей структуры проекта
  141.    
  142.     в src \ main
  143.    
  144.       core - универсальное, что можно переиспользовать в разных проектах
  145.       pages - пейджи тоже можно переиспользовать для других тестов этого же приложения
  146.    
  147.    
  148.     в src \ test
  149.    
  150.       testdata - тестовые данные (если такие есть и они вынесены в отдельный класс)
  151.       testconfigs - предки тест-класса (так можно их изолировать от  собственно тест-классов - чтоб легче было ориентироваться
  152.    
  153.    
  154.     про пекеджи еще немного)
  155.     если GroupID = com.somesite
  156.     а проект todomvctest
  157.     то пакет корневой должен быть com.somesite.todomvctest
  158.    
  159.     логика  - чтобы "не смешивались имена сущностей"
  160.    
  161.     внутри одной компании - может быть несколько проектов)
  162.     и у всех у них один com.somesite  - базовый пекедж
  163.     но для каждого проекта должен быть свой  “базовый пекедж проекта"
  164.     иначе все смешается)
  165.     важно то, что когда этот проект выльется в отдельную библиотеку,
  166.     то не будет конфликтов при его подключении
  167.  
  168. */
  169.  
  170. **************************
  171. http://joxi.ru/Y2LXgYnfn3gpx2
  172. /*
  173.     и вот это тоже подправь
  174. */
Advertisement
Add Comment
Please, Sign In to add comment