Как стать автором
Обновить

Комментарии 19

Спасибо! Я думаю, это отличное дополнение к Selenium.
Спасибо, много полезной инфы для меня.
НЛО прилетело и опубликовало эту надпись здесь
django-coverage — тоже, кстати, на coverage.py работает — и отчеты можно стандартные получать, указав COVERAGE_CUSTOM_REPORTS = False. django-coverage состоит из генератора этих кастомных отчетов (опционального) и клеевого кода для джанги, чтобы этот клеевой код не писать каждый раз, для простоты настройки вообщем.
Очень здорово, не знал о существовании это либы. Спасибо!
Лох не парсер, а я. Прошу прощения за незакрытый тег.
Это интересно! У меня никак не работает вот это:

twill.follow(u'Форум')

и даже вот это:

twill.follow(u'Форум'.encode('utf8'))

twill подключен через wsgi_intercept, кодировка страниц — utf8. Если это все можно заставить работать и лох не твилл, то я бы убрал из статьи про нерабочий уникод, не хочется распространять несправедливые слухи.
Сейчас по быстрому попробовал в шелле

>> [meako@meako_inspiron meako]$ twill-sh 
 -= Welcome to twill! =-

current page:  *empty page* 
>> go "http://habr.ru"
==> at http://habrahabr.ru/
current page: http://habrahabr.ru/
>> follow "Люди"
==> at http://habrahabr.ru/people/
current page: http://habrahabr.ru/people/
>> 


Чуть позже попробую в тестах, поскольку мы обычно пользуемся конструкцией go('django_view_name', [args]).
Только что набросал елементарный tddspry-тест, чтоб проверить на проекте над которым работаю:
    def test_advsearch_link(self):
        self.go200('index')
        self.follow("Поиск")
        self.url('search')
        self.find("Введите запрос")

Прошел корректно, все работает.
Попробовал в обыкновенном питоньем шелле:) Вышло довольно смешно:
>>> twill.commands.go("http://habr.ru")
==> at http://habrahabr.ru/
'http://habrahabr.ru/'
>>> twill.commands.follow("Люди")
==> at http://habrahabr.ru/people/
'http://habrahabr.ru/people/'
>>> twill.commands.follow(u"Люди")
Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "/usr/lib/python2.6/site-packages/twill-0.9-py2.6.egg/twill/commands.py", line 202, in follow
    raise TwillAssertionError("no links match to '%s'" % (what,))
TwillAssertionError: <unprintable TwillAssertionError object>


Как вы поняли, передавать нужно строку а не юникодовый обьект.
Возможно, что-то в клеевом коде из django-test-utils все ломает, не знаю.

#coding: utf-8
from django_webtest import WebTest
from test_utils.utils import twill_runner as twill

class TestTest(WebTest):
    fixtures = ['cities.city.json', 'users.json']

    def testTwill(self):
        twill.setup()
        try:
            twill.go('/login/') 
            twill.code(200) # все ок
            
            twill.showlinks() # печатает какую-то перекодированную несколько раз белиберду
            twill.follow('Регистрация') # валится с no links match to Регистрация
        finally:
            twill.teardown()

    def testWeb(self):
        page = self.app.get('/login/')
        page.click(u'Регистрация') # работает



twill пробовал и с pypi, и из репозитория на гуглокоде (там пробовали доделать, но так и бросили опять год назад). Интересно, что последний mechanize сам по себе, без twill, ссылки печатает правильно.
Да, еще момент — у вас общение идет по http, я проверял работу через wsgi, может еще в этом косяк.
У tddspry wsgi-intercept который мокает http соединение.
В двух словах:
from twill import add_wsgi_intercept, commands

    def setup(self):
        super(BaseHttpTestCase, self).setup()

        app = AdminMediaHandler(WSGIHandler())
        add_wsgi_intercept(self.IP, self.PORT, lambda: app)


Хотя, я посмотрел, автор tddspry недавно обновил код, и там уже по другому. Нужно будет разбираться:)
>по ссылкам мы ходим, указывая их имя (.click(u'Регистрация'), например), т.е. то, на что на самом деле жмет пользователь (есть и другие возможности).

вот это круто
ага, все сразу побежали делать ботов)
что-то битбакет плющит последние пару дней. где еще можно скачать твою ветку вебтеста?
Битбакет последнюю пару месяцев колбасит что-то) Кинул к себе снимок репозитория.

Установка:

mkdir webtest
cd webtest
hg init
hg unbundle http://kmike.ru/webtest-r92.bundle
hg up
python setup.py install
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории