Maciej Lorenc

Maciej Lorenc programista
aplikacji testowych

Temat: pyunit i data providery

Hejka,
bawię się właśnie z połączeniem python (unittest) + selenium2 i natrafiłem na problem, którego do tej pory nie miałem, bowiem korzystałem z php-a (i selenium RC). Otóż jak się okazuje unittest nie dostarcza czegoś takiego jak dataprovider, cały problem jest opisany np. tutaj -> http://melp.nl/2011/02/phpunit-style-dataprovider-in-p... . Jest też rozwiązanie, jednakże nie do końca mnie ono satysfakcjonuje. Chodzi o to, że jeśli test wywali się dla pierwszego zestawu danych testowych, to testy dla kolejnych danych już się nie uruchomią. Nie jestem specem od programowania, więc nie bardzo widzę jakieś proste rozwiązanie. Możecie coś doradzić, ewentualnie znacie jakieś inne rozwiązanie problemu dostarczania danych do testów?
Konrad Delong

Konrad Delong programista

Temat: pyunit i data providery

Cześć,

Rzeczywiście, unittest nie ma takich mechanizmów. Alternatywne biblioteki (nosetests czy py.test) mają obsługę tzw. testów generatywnych (co urządzałoby Cię pod tym kątem, że wszystkie wygenerowane testy się wykonają bez względu na to czy któryś padł po drodze). Możesz przeczytać więcej tutaj [1]

Inne rozwiązanie, to zapisanie kolejnych "wierszy" danych dla testu w metodach testowych, i wrzucenie logiki do asercji. Czyli dla przykładu z Twojego linka:


class CssParserTest:
def setUp(self):
self.parser = CssColor()

def assert_parse_color(self, color, notation):
self.assertEquals(color, self.parser.parse_color(notation))

def test_short_numeric(self):
self.assert_parse_color((0, 0, 0), '#000')

def test_long_numeric(self):
self.assert_parse_color((0, 0, 0), '#000000')

# ...i dla tych podobnie:
# ( (0, 0, 0), 'rgb(0, 0, 0)' ),
# ( (0, 0, 0), 'black' )


[1] http://readthedocs.org/docs/nose/en/latest/writing_tes...Konrad Delong edytował(a) ten post dnia 31.07.11 o godzinie 23:02
Maciej Lorenc

Maciej Lorenc programista
aplikacji testowych

Temat: pyunit i data providery

Dzięki wielkie za wskazówki. O ile druga metoda mnie nie urządza, to o pierwszej poczytam :)



Wyślij zaproszenie do