SimpleTest && hidden fields

andry

Новичок
SimpleTest && hidden fields

Следующая задача. Необходимо методами SimpleTest-а выставить значение hidden полей и отправить постом скрипту.

Упрощенный вариант:

1. форма(f.html)
PHP:
<form action="f2.php" method="POST">
    <input type="text" name="a" value="">
    <input type="hidden" name="b" value="">
    <input type="submit" value="Go" />
</form>
2. Тест
PHP:
class HiddenItemTest extends WebTestCase {
    
    function testDefaultValue() {
        $this->get('http://localhost/bin/f.html');
        $this->setField('a', '1');
        $this->setField('b', '2');
        $this->clickSubmit('Go');
        $this->assertWantedPattern('/OK_A/');
        $this->assertWantedPattern('/OK_B/');
    }
}
3. Проверка(f2.php)
PHP:
if($_POST["a"]==1){
    echo "OK_A";
}else{
    echo "BUG_A!";
}

if($_POST["b"]==2){
    echo "OK_B";
}else{
    echo "BUG_B!";
}
Выдает:
Fail: ../bin/stest.php -> hiddenitemtest -> testdefaultvalue -> Pattern [/OK_B/] not detected in [String: OK_ABUG_B!] at line [10]

В доках:
" Here is the full list of widgets currently supported...

* Text fields, including hidden and password fields..."


Я первый день симплтест юзаю, может чего неправильно понял!?

WinXp, Apache, PHP 4.3.8, SimpleTest 1.0
 

pachanga

Новичок
Гм...странно, вроде все верно. Попробуй посмотреть, что именно отображается на странице:

PHP:
    function testDefaultValue() {
        $this->get('http://localhost/bin/f.html');
        $this->setField('a', '1');
        $this->setField('b', '2');
        $this->clickSubmit('Go');
        if(!$this->assertWantedPattern('/OK_A/'))
           $this->showSource();
        if(!$this->assertWantedPattern('/OK_B/'))
           $this->showSource();
    }
Помимо showSource, существуют также методы showHeaders, showRequest.
 

andry

Новичок
Собственно через showRequest и обнаружил проблему=)

А выводит, собственно, ровно то, что написанно в Fail - OK_ABUG_B!

ПО реквесту:
a=1&b=

-~{}~ 31.01.06 12:07:

Мне интересно, у Вас это работает?
 

pachanga

Новичок
Я вспомнил...что-то такое промелькивало в рассылке SimpleTest:

http://sourceforge.net/mailarchive/message.php?msg_id=12600502
http://sourceforge.net/mailarchive/message.php?msg_id=12646342 - решение

Такое поведение было задумано специально для hidden полей, их назначать просто так нельзя...

Подборка по теме:
http://sourceforge.net/search/?type_of_search=mlists&forum_id=34779&group_id=76550&atid=0&words=Bug+in+hidden+element+handling&Search=Search

-~{}~ 31.01.06 12:19:

Автор оригинала: andry
Мне интересно, у Вас это работает?
Последнее время все больше пользуемся Selenium, хотя и SimpleTest WebTester не списываем со счетов, учитывая планы Маркуса по внедрению движка Mozilla для более достоверного приемочного тестирования.
 

andry

Новичок
Спасибо!
Жаль, конечно, мне очень неудобно описывать Hidden-поля, у меня более 10-ти полей вариативно дефолтовы.

А если в кратце, почему Selenium? И есть ли у него такая же фича с хиден полями?

Хочу внедрить тесты, так что все равно с чего начинать. А Вы человек опытный=)

-~{}~ 31.01.06 12:43:

Почитал про Selenium - это не совсем тоже самое, что SimpleTest
 

pachanga

Новичок
А если в кратце, почему Selenium? И есть ли у него такая же фича с хиден полями?
Самое главное преимущество Selenium - возможность протестировать нетривиальный, построенный на JS, интерфейс. Недостатком Selenium является то, что относительно сложно организовать тесты в batch режиме(есть driven режим, но, к сожалению руки все никак до него не доходили).

Насчет хиден полей: в Selenium ты просто эмулируешь некоторые действия пользователя, которые приводят к установке этих полей. Напрямую их изменять, по-моему, тоже нельзя.

Хочу внедрить тесты, так что все равно с чего начинать.
Это здорово, но, я надеюсь, ты понимаешь, что ты начинаешь с приемочных тестов, не забудь и про модульные!

А Вы человек опытный=)
Давай на "ты", а то мне как-то неловко....

Почитал про Selenium - это не совсем тоже самое, что SimpleTest
Конечно не то же самое, я сравнивал эти два продукта с точки зрения приемочного тестирования, а именно с SimpleTest WebTester.

А ведь в SimpleTest также есть мощные средства для модульного тестирования (обычно это его основное применение).
 

andry

Новичок
Спасибо за пояснения!
Мне все таки больше модульное тестирование нужно, т.к. там вся основная бизнес логика и, следовательно, основной источник ошибок.

Это здорово, но, я надеюсь, ты понимаешь, что ты начинаешь с приемочных тестов, не забудь и про модульные!
конечно.

Давай на "ты", а то мне как-то неловко....
не вопрос=)
 
Сверху