yashaka

Untitled

Jan 31st, 2017
238
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.81 KB | None | 0 0
  1. from selene import config
  2. from selene.support import by
  3. from selene.support.conditions import be
  4. from selene.support.conditions import have
  5. from selene.tools import visit, s, ss, wait_to
  6.  
  7.  
  8. def test_filters_tasks():
  9.     # ім'я неправильно... ми пишемо не тест що перевіряє фільтрацію... то на відео ми фільтрацію тестували, у тебе інша задача
  10.     config.browser_name = 'chrome'
  11.     visit('https://todomvc4tasj.herokuapp.com/')
  12.     wait_to(have.js_returned_true(
  13.         "return $._data($('#clear-completed').get(0), 'events').hasOwnProperty('click')"), config.timeout * 2)
  14.     # ще такий нюанс.... ми зазвичай створюємо змінні (чи методи) для того щоб перевикористовувати який код...
  15.     # щоб двічі одне і те ж не писати
  16.     # і потім щоб якщо треба щось поміняти - то міняти тільки в одному місці
  17.     # але не тільки для цього, а і для того щоб зробити код більш читабельним (так само як ти з методами зробив)
  18.     # вище от цей вейт доволі складний... з першого погляду не ясно чого він чекає,
  19.     # тому краще винести от той скрипт в тексті в свою змінну
  20.     # wait_to(have.js_returned_true(clear_completed_js_loaded), config.timeout * 2)
  21.     # там десь на відео це доречі мало бути ;)
  22.  
  23.     add('task1', 'task2', 'task3', 'task4')
  24.     should_be_tasks('task1', 'task2', 'task3', 'task4')
  25.     # правильний порядок відповідно англійській граматиці мав би бути: tasks_should_be
  26.  
  27.     destroy('task2')
  28.  
  29.     toggle('task4')
  30.     filter_completed()
  31.     should_be_tasks('task4')
  32.     # я ніби мав писати раніше... що у нас в сценарії немає фільтерінга... ми його тут зараз не тестуємо
  33.     # в даному випадку достатньо перевірити результат дії clear_completed
  34.     # - адже закліеритись мають тільки ті задачі які були затуглені...
  35.     # це такий типу трюк з "неявними перевірками" в "довгих тестах типу нашого"
  36.     # (ще є інший стиль тестів - атомарні чи "фіче тести як я їх іноді називаю") - там би такий трюк не пройшов
  37.     # десь в шушпанчиках я мав про це розповідати
  38.  
  39.     filter_all()
  40.     should_be_tasks('task1', 'task3', 'task4')
  41.  
  42.     clear_completed()
  43.     should_be_tasks('task1', 'task3')
  44.  
  45.     toggle_all()
  46.     filter_completed()
  47.     should_be_tasks('task1', 'task3')
  48.  
  49.     clear_completed()
  50.     should_be_tasks()
  51.  
  52. tasks = ss('#todo-list li')
  53.  
  54.  
  55. def add(*texts):
  56.     for text in texts:
  57.         s('#new-todo').set(text).press_enter()
  58.  
  59.  
  60. def destroy(task_text):
  61.     tasks.element_by(have.exact_text(task_text)).click().element('.destroy').click()
  62.  
  63.  
  64. def toggle(task_text):
  65.     tasks.element_by(have.exact_text(task_text)).element('.toggle').click()
  66.  
  67.  
  68. def toggle_all():
  69.     s('#toggle-all').click()
  70.  
  71.  
  72. def clear_completed():
  73.     s('#clear-completed').click()
  74.  
  75.  
  76. def filter_active():
  77.     s(by.link_text('Active')).click()
  78.  
  79.  
  80. def filter_completed():
  81.     s(by.link_text('Completed')).click()
  82.  
  83.  
  84. def filter_all():
  85.     s(by.link_text('All')).click()
  86.  
  87.  
  88. def should_be_tasks(*text):
  89.     tasks.filtered_by(be.visible).should(have.exact_texts(*text))
Advertisement
Add Comment
Please, Sign In to add comment