Ghost.py: Реализация sleep с обработкой событий

Вообще мне Ghost.py не очень пока нравится. Судя по его версии (у меня Ghost.py 0.1b2) — достаточно сырой продукт. Нет некоторыз полезных shortcut’ов, некоторые фичи работают не очень хорошо (например, click — генерирует только JS-событие click, а для ExtJS надо бы mouseDown, для полной эмуляции клика мышкой — ещё и mouseUp). Называть пакет ghost и добавлять в него модуль ghost — тоже не лучшая идея, на мой взгляд (ну их, эти name collisions). Нет функции sleep, может это и плохо использовать именно sleep, но иногда так гораздо удобней, а в случае, если это будет работать плохо, — можно и переделать.

Но в целом, т.к. я не работал с другими системами web-тестирования (например, selenium), само написание тестов понравилось… Это же какая-то магия, когда ты сидишь, а тут за тебя что-то кликает, формы заполняет и т.п. Даже закралась мысль переквалифицироваться в QA.

Немного отошёл от сути. На самом деле pull request с фичей sleep’а висит почти месяц уже как, но автор что-то не торопится мерджить и выпускать новую версию. А посему, вот небольшой helper для реализации sleep в Ghost.py:
import time
from ghost import ghost

def ghost_sleep(sleep):
«»»Sleep and process events.»»»
start = time.time()
ghost.Ghost._app.processEvents()
while time.time() — start < sleep: time.sleep(0.01) ghost.Ghost._app.processEvents()

Update

Отписался в pull request’е что фича хорошая. Вчера автор вмерджил её, вероятно, в следующем релизе будет возможность использовать внутри testcase self.ghost.sleep(time).

Понравилась статья? Поделиться с друзьями:
Комментариев: 1
  1. QA

    Возможно, selenium будет более достойной альтернативой. Как минимум, это более популярное решение для автоматизации тестирования. :)

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: