Вообще мне 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).
Возможно, selenium будет более достойной альтернативой. Как минимум, это более популярное решение для автоматизации тестирования.