PHPUnit live log on failure/error

Недавно я запускал несколько тысяч тестов phpunit. Я использую - process-isolation , поэтому для завершения тестов требуется около 40 минут.

Иногда после агрессивного рефакторинга многие тесты начинают терпеть неудачу (слава богу, у меня есть тесты!). И если тест терпит неудачу в середине набора тестов, я должен подождать еще 20 минут, чтобы узнать, что это за тест, и это сообщение.

Я бы использовал - stop-on-failure , если не прерывал весь процесс. В основном я ищу вариант - log-on-failure .

То, что я ищу именно, - это способ увидеть сообщение об ошибке/ошибке теста сразу после его отказа, а не после завершения всех других тестов. Но весь процесс выполнения других тестов не должен прерываться. Также достаточно вести журнал в файл.

Буду признателен за ваши предложения.

EDIT: Я рад видеть ваши предложения, как я мог бы улучшить свое тестирование в целом, и я постараюсь следовать им, однако я бы хотел найти решение моей конкретной проблемы.

4
nl ja de
вы пробовали - verbose ?
добавлено автор Prisoner, источник
Какую информацию он предоставляет? Я использовал --debug, который предоставляет информацию о каждом тестовом случае и наборе данных поставщика данных. Он выводит слишком много информации. Я хотел бы получить информацию о неудавшихся тестах.
добавлено автор Igor Malyk, источник
Я думаю, что этот вопрос по-прежнему не получил должного ответа. Если кто знает. Поделись, пожалуйста!
добавлено автор Vince V., источник

2 ответы

Даже если вы не согласны с этим, вы ищете - stop-on-failure .

Потому что, когда вы видите, где ошибка, вы можете написать исправление. Затем вам нужно снова запустить тесты.

Если вы только входите в систему сбой, вы еще не можете запустить тесты еще раз, потому что, скажем, через 10 секунд первый сбой будет виден и исправлен в течение еще одной минуты. Однако вам все равно нужно подождать ca. 38 минут, пока вы не сможете выполнить тесты.

Другая проблема заключается в том, что ваши тесты занимают слишком много времени. Вам нужно быстрее их получить. То, что вы используете - process-isolation , в конечном итоге является признаком того, что у вас есть интеграционные тесты. Отделите их от своих модульных тестов, они часто занимают больше времени.

Затем вы можете запускать интеграционные тесты изолированно и непрерывно (в цикле, всегда), и вы запускаете модульные тесты при сохранении ваших файлов.

2
добавлено
Unittest должен принимать только секунды - долю секунд. С интеграционными испытаниями это не всегда возможно. Вы пишете, что используете базу данных. Убедитесь, что база данных тестирования интеграции находится только в памяти, а не на диске. Это должно дать вам еще большую скорость для тестов интеграции. Группируйте как SDC, вы также можете сделать это, имея разные подкаталоги, для модульных тестов, один для тестов интеграции.
добавлено автор hakre, источник
Это нормально работает с вашей IDE или с вашей оболочкой. Наиболее легко находится внутри оболочки и команда watch - поместите окно оболочки на ваш второй монитор, желательно с цветом. Это автоматически запустит ваши тесты, если вы что-то сломаете, вы заметите. Однако сначала отделите свои интеграционные тесты от модульных тестов.
добавлено автор hakre, источник
Представьте себе следующую ситуацию, например, 3 теста проваливаются через 10 минут, 5 через 20 минут и 2 через 30 минут. Когда вы видите первые 3 неудачных теста, вы хотите сразу начать работать с ними, даже если весь пакет процессов еще не завершен. Очень часто случаются тривиальные ошибки, такие как неправильное имя переменной, тип и т. Д. Может случиться так, что к тому моменту, когда вы увидите следующие 5 неудачных тестов, вы уже закончили исправление первого. 3. Если был использован -stop-on-failure, вы снова потратили бы время. Более того, вы не будете знать, что другие терпят неудачу.
добавлено автор Igor Malyk, источник
Вы правы, большинство тестов - это интеграционный тест, который в значительной степени зависит от БД. Вот почему БД отбрасывается и повторно инициализируется в каждом тестовом startUp. Однако я рассмотрю идею разделения чистых модульных тестов на интеграционные тесты. Спасибо за подсказку.
добавлено автор Igor Malyk, источник
Выполнение тестов после сохранения файлов? Тесты должны заканчиваться через несколько секунд. Вы реализовали эту систему? Если да, вы могли бы рассказать об этом больше.
добавлено автор Igor Malyk, источник
Да, вы правильно относитесь к хранению данных в памяти. Я установил раздел tmpfs в ОЗУ и имел там MySQL файлы. Это дало мне импульс от 70 минут до 39.
добавлено автор Igor Malyk, источник
Говоря о выполнении чистых модульных тестов при сохранении файла. Не могли бы вы дать больше намеков на это?
добавлено автор Igor Malyk, источник

хорошо для вас, чтобы написать все эти тесты. Как вы говорите, они могут быстро доказать свою ценность, когда вы начнете большую работу по рефакторингу! Но 40 минут звучат как очень медленный набор тестов, даже для нескольких тысяч из них - у меня несколько сотен работает примерно за 10 секунд. Возможно, у вас есть некоторые тесты, которые особенно медленны?

Если ваша система подходит к этому, возможно, стоит разделить их на группы, чтобы вы могли настроить только запуск тестов, которые имеют отношение к изменяющемуся коду. PHPUnit поддерживает группировку тестов и задает в командной строке, какие группы запускать.

Это может быть особенно эффективной стратегией, если большинство ваших тестов довольно быстро, но у вас есть несколько очень медленных тестов, которые занимают большую часть времени. Если вы можете заставить его пропустить несколько очень медленных тестов, когда они не актуальны, это будет иметь большое значение.

Кроме того, эта стратегия группировки тестов также позволяет использовать - stop-on-failure для каждой группы, сохраняя при этом все тесты в других группах.

См. руководство PHPUnit для получения дополнительной информации о групповых тестах .

Надеюсь, это поможет.

Большинство тестов - это интеграционные тесты, которые работают с реальной БД. DB очищается и заполняется данными при каждом запуске теста. Я знаю тестовую группу, и, конечно, я запускаю соответствующие тесты, прежде чем запускать весь костюм. На мой взгляд, одним из лучших результатов интеграционных тестов является то, что они проверяют все не только то, что вы непосредственно изменили, но и трудно найти ошибки, которые часто встречаются конечными пользователями.
добавлено автор Igor Malyk, источник
Однако я подумаю о более мелкозернистой группировке.
добавлено автор Igor Malyk, источник
QA — вакансии и аналитика рынка вакансий
QA — вакансии и аналитика рынка вакансий
5 668 участник(ов)

Вакансии и поиск работы в сфере QA. Вопросы: @qa_ru Про деньги: @qa_fin При размещении вакансии указывать: - должность - компанию - требования к кандидату - условия и ЗП хэштеги: #город #типзанятости

QA — русскоговорящее сообщество
QA — русскоговорящее сообщество
3 625 участник(ов)

Общаемся про все виды тестирования и его автоматизацию. Без мата, грубостей и провокаций. События: @qaevents Вакансии: @qa_jobs Автоматизаторы: @qa_automation Слухи про компании: @qa_bad_company

phpGeeks
phpGeeks
3 620 участник(ов)

Best PHP chat Еще: @dbGeeks - базы данных @phpGeeksJunior - новичкам @moscowProgers - IT Москва @ebanoePhp - весёлый канал о PHP @laravel_pro - Laravel @jobGeeks - вакансии @jsChat - JS Правила: https://t.me/phpGeeks/764859 ДР - 28.03.2016

QA juniors
QA juniors
2 720 участник(ов)

Добро пожаловать в чат джуниоров QA! Общаемся обо всём, что связано с тестированием и не только :) В чате царит дружественная атмосфера, поэтому общаемся без мата, грубостей. @qa_automation - автоматизация @serious_tester - для тестировщиков и QA

QA - Bad Company!
QA - Bad Company!
2 602 участник(ов)

Позитив и негатив про компании или курсы, куда не стоит идти работать или учиться, а куда стоит. За пиратский контент - бан. @qa_fin о деньгах Русскоговорящее сообщество: @qa_ru Флудилка: @qaFlood Вакансии: @qa_jobs Финансы: @qa_fin

QA — Автоматизация
QA — Автоматизация
2 434 участник(ов)

1. Обсуждение технологий автоматизированного тестирования 2. Помощь начинающим Ru-сообщество: @qa_ru Джуночат: @qajuniors Вакансии: @qa_jobs Финансы: @qa_fin Митапы и события: @qaevents Паблики: @serious_tester, @automation_remarks, @atinfo

QA - Finance
QA - Finance
1 347 участник(ов)

Чат о деньгах тестировщиков. ЗП, релокейты,оферы. @qa_bad_company - обсуждение компаний/курсов и карьерного роста для QA @qa_automation - авто QA Холивары, политика, религия-бан Реклама, спам, оскорбления - бан Для флуда используйте другой чат

PHP
PHP
1 309 участник(ов)

Группа про современный PHP. Обсуждаем ООП, TDD, BDD, DDD, SOLID, GRASP и прочие крутые базворды Для ознакомления: https://gist.github.com/mkusher/711bd46f0b62fbae851182e6fb3b1839 Группа PHP для новичков @phpGeeksJunior Вакансии: https://t.me/fordev

PHP — вакансии, поиск работы и аналитика
PHP — вакансии, поиск работы и аналитика
1 251 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению PHP, Laravel, Symfony, Yii и т.д. Здесь всё: full-time, part-time, remote и разовые подработки. См. также: @qa_jobs, @devops_jobs, @javascript_jobs, @nodejs_jobs, @uiux_jobs, @products_jobs

phpGeeksJunior
phpGeeksJunior
980 участник(ов)

Группа для новичков. Не стесняйтесь задавать вопросы по php. Не флудить!!!! Правила и полезные ссылки https://gist.github.com/exileed/a53dd0617b35a705ff44b38c8028e6a5 Бест от пхпгикс https://t.me/best_of_phpgeeks

phpclub.ru
phpclub.ru
872 участник(ов)

Официальный чат phpclub.ru - остерегайтесь подделок #rules Правила группы - уважайте друг друга. Скриншоты -> ссылками. Код -> pastebin.com. Вакансии строго -> https://goo.gl/4bNxym, в чат ссылку. За рекламу и мат - БАН!

Devall | PHP
Devall | PHP
272 участник(ов)

Пристанище для восходящих звёзд разработки, которые перейдут на более адекватные языки. http://combot.org/chat/-1001014863761 Инвайт: j.mp/devallphp