4/21/2013

Python test framework - splinter

Trafiłem dzisiaj na framework splinter, który służy do testowania webowych aplikacji. Po przeczytaniu dokumentacji i przejrzeniu krótkiego tutoriala postanowiłem sprawdzić czy może mi się przydać. Framework poznałem u siebie lokalnie, wykonując testy na jednej z moich appek do testów, ale tutaj przedstawię to na istniejącej witrynie w sieci. Na początek garść informacji.

Możliwości

  • wykonywanie skryptów javascript
  • bardzo proste api
  • multi webdrivers (chrome, firefox, phantomjs, zopetestbrowser, remote)
  • wsparcie dla xpath i css
  • działające iframe i alerty
  • działający ajax oraz asynchroniczny javascript

 

 Instalacja

pip install splinter
Po jakże trudnej instalacji możesz wziąć się za testowanie web aplikacji.

Poniżej znajduje się lista, które przetestuję na stronie sonyvegas:
  • skorzystanie z wyszukiwarki
  • próba skorzystania z kalendarza
  • próba zalogowania na nieistniejące konto
Pierwsze co musisz zrobić to stworzyć instancję przeglądarki, a robisz to tak:
from splinter import Browser
browser = Browser('firefox')
Następnie należy podać adres pod jaki zamierzasz się udać. Jak wyżej zaznaczyłem zacznę od testowania wyszukiwarki:
browser.visit('http://sonyvegas.info/search.php')

input = browser.find_by_xpath(
    '//td[@class="trow1"]/table/tbody/tr/td/input[@class="textbox"]')
input.first.fill("rendering")

button = browser.find_by_name("submit")
button.first.click()

assert browser.is_text_present("Wyniki") is True
assert len(browser.find_by_xpath('//a[@class=" subject_old"]')) == 20
Co wykonał ten test? Wszedł pod wskazany adres. Wyszukał inputa (za pomocą xpath) w którego wprowadził wyrażenie "rendering", następnie odszukał przycisk służący do zaakceptowania szukania i kliknął go. Po tej akcji sprawdził czy na stronie znalazł się tekst "Wyniki" oraz czy na stronie jest 20 linków z wynikami.

Teraz sprawdzę czy user na pewno nie ma dostępu do kalendarza:
browser.visit("http://sonyvegas.info/calendar.php")
assert browser.is_text_present(
    u"Kalendarz został wyłączony przez administratora.")
Jak widać test jest bardzo prosty. Udaje się pod wskazany internetowy adres :) i sprawdza czy wyświetla nam się odpowiedni komunikat na stronie.

Ostatnim testem będzie próba zalogowania się na nieistniejące konto:
browser.visit("http://sonyvegas.info/member.php?action=login")
browser.fill("username", "testuser")
browser.fill("password", "userpassword")
browser.check("remember")
browser.find_by_name("submit").first.click()
assert browser.is_text_present(
    u"Wprowadzono nieprawidłowy login i/lub hasło.")
Jak widzisz tutaj też nie ma zbyt dużo filozofii. Udajesz się pod adres logowania, wprowadzasz username, password oraz zaznaczasz, że chcesz być zapamiętanym i klikasz w submit, tyle. Następnie sprawdzasz, czy user się nie zalogował.

Użyłem tutaj bardzo prostych przykładów, lecz nie powinieneś mieć problemów z używaniem splintera. Framework ma naprawdę dobrą dokumentację, naprawdę mi się spodobał.

Zapomniałbym! Na koniec oczywiście zamknij przeglądarkę ;)
browser.quit()