Перейти к содержимому

Публикации contestar

31 публикаций создано contestar (учитываются публикации только с 17 мая 2023)



#76833 Автоматизация тестирования с помощью Fitnesse

Отправлено автор: contestar 07 июля 2010 - 21:10 в Автоматизированное тестирование

По какой причине вывод пал на этот инструмент? Я бы посоветовал Selenium RC.



#76806 Вывод в файл AssertionError

Отправлено автор: contestar 07 июля 2010 - 08:23 в Selenium - Functional Testing

		log.info("Проверяем лейбл 'Сумма:'");
		NoncriticalAssert(selenium.getText("xpath=//tr[7]/td[@class='label' and position()=1]/span[@class='lblrequired']/label").equals("Сумма:"),
		"Отсутствует лейбл 'Сумма:'. Получен текст: " + selenium.getText("xpath=//tr[7]/td[@class='label' and position()=1]/span[@class='lblrequired']/label"));


По-моему, такой подход утяжеляет код.



#76794 Вывод в файл AssertionError

Отправлено автор: contestar 07 июля 2010 - 07:14 в Selenium - Functional Testing

А в чем проблема?
так и пишите log.error(yourMessage)
или так log.error(yourMessage, ex)


Дело в том, что в одном тесте идёт проверка большого числа элементов. Например, все лейблы на странице (~50 штук), другой тест - проверка такого же количества полей. Поэтому было бы проще выводить log.error только для тех элементов, которые действительно failed.

Как уже привёл в первом посте идёт проверка наличия кнопок их может быть огромное количество:

1. verifyTrue(selenium.isElementPresent(button1))
2. verifyTrue(selenium.isElementPresent(button2))
.
.
50. verifyTrue(selenium.isElementPresent(button50))

Допустим, verify - failed для 10 кнопок, тогда лог получим довольно внушительным. Мне хотелось бы вывести в лог только строки для этих 10-ти кнопок.

tests.tests.CreateTaskScreen.UI.Buttons.testButtons(Buttons.java:41)
tests.tests.CreateTaskScreen.UI.Buttons.testButtons(Buttons.java:52)
tests.tests.CreateTaskScreen.UI.Buttons.testButtons(Buttons.java:59)
...

Или так:
Save button doesn't exist
Edit button doesn't exist
Exit button doesn't exist
...

Не буду же я делать checkForVerificationErrors() после каждого verify-метода )



#76782 Вывод в файл AssertionError

Отправлено автор: contestar 06 июля 2010 - 13:36 в Selenium - Functional Testing

Всем привет.
Использую seleniumRC(1.0.3) + Java + JUnit + IDEA.
Прикрутил для логирования log4j. Возник вопрос, при использовании verifyTrue/False в лог вывожу printStackTrace. Но в нём содержится достаточно много бесполезной информации. Есть возможность каким-либо распарсить это сообщение и выводить в лог только нужную строку. Приведу пример.

Example.class
public class Example extends TestsBase {
static Logger log = Logger.getLogger(Example.class);
public void testExample() throws Exception {
log.info("Test is running…");
try {
		verifyTrue(selenium.isElementPresent(buttonSaveTask));
		verifyTrue(selenium.isElementPresent(buttonReset));
		checkForVerificationErrors();
	 }
		catch (Throwable ex) {
				log.error(ex);
				ex.printStackTrace();
				throw new Exception(ex);		   
}

В случае отсутствия buttonSaveTask или buttonReset в логе имеем следующее:
INFO : Test is running…
ERROR: java.lang.AssertionError: java.lang.AssertionError: null
	at com.thoughtworks.selenium.SeleneseTestBase.fail(SeleneseTestBase.java:356)
	at com.thoughtworks.selenium.SeleneseTestBase.assertTrue(SeleneseTestBase.java:361)
	at com.thoughtworks.selenium.SeleneseTestBase.assertTrue(SeleneseTestBase.java:365)
	at com.thoughtworks.selenium.SeleneseTestBase.verifyTrue(SeleneseTestBase.java:125)
	at com.thoughtworks.selenium.SeleneseTestCase.verifyTrue(SeleneseTestCase.java:119)
	at tests.tests.CreateTaskScreen.UI.Buttons.testExample(Example.java:34)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at junit.framework.TestCase.runTest(TestCase.java:168)
	at junit.framework.TestCase.runBare(TestCase.java:134)
	at com.thoughtworks.selenium.SeleneseTestCase.runBare(SeleneseTestCase.java:212)
	at junit.framework.TestResult$1.protect(TestResult.java:110)
	at junit.framework.TestResult.runProtected(TestResult.java:128)
	at junit.framework.TestResult.run(TestResult.java:113)
	at junit.framework.TestCase.run(TestCase.java:124)
	at junit.framework.TestSuite.runTest(TestSuite.java:232)
	at junit.framework.TestSuite.run(TestSuite.java:227)
	at com.intellij.junit3.TestRunnerUtil$SuiteMethodWrapper.run(TestRunnerUtil.java:259)
	at junit.textui.TestRunner.doRun(TestRunner.java:116)
	at com.intellij.junit3.JUnit3IdeaTestRunner.doRun(JUnit3IdeaTestRunner.java:108)
	at junit.textui.TestRunner.doRun(TestRunner.java:109)
	at com.intellij.junit3.JUnit3IdeaTestRunner.startRunnerWithArgs(JUnit3IdeaTestRunner.java:42)
	at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:192)
	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:64)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at com.intellij.rt.execution.application.AppMain.main(AppMain.java:110)

Я хочу получить в логе только это:
INFO : Test is running…
ERROR:at tests.tests.CreateTaskScreen.UI.Buttons.testExample(Example.java:34)

Это возможно?

Может вообще применить иной подход к логированию? Например, чтобы лог был таким:
INFO : Test is running…
ERROR: Button Save Task doesn't exist

В таком случае как добиться такого вывода.

Спасибо.



#76294 Требуется QA инженер

Отправлено автор: contestar 12 июня 2010 - 15:11 в Работа/Санкт-Петербург

вы как-нибудь связаны с Developonbox (Zodiac Inc.)?



#75366 Selenium RC не видит окно

Отправлено автор: contestar 22 апреля 2010 - 14:14 в Selenium - Functional Testing

Привет, попробуй так:

selenium.click("symbolLookupLink");				   //вызываем твоё окно
		selenium.selectWindow("mywindow");				   //переключаем фокус на открытое окно
		selenium.type(LookupPopupFieldName, "DIA");			   //заполняем форму
		selenium.close();							  //закрываем окно
		selenium.selectWindow(null);										//возвращаем фокус на главное окно


Надо указать селениуму в каком окне производить действия. Для этого используется selectWindow(windowID). Падение по timeout скорее всего происходит из-за того, что сервер ждёт появления чего-то, а это чего-то не появляется (могу ошибаться).