@prophp7

Страница 562 из 1387
Alexey
24.08.2017
07:41:03
В общем, у меня главная проблема - миграции на каждый тест. тяжеловато становится постепенно (хотя тоже все относительно)
мы перешли на способ с параллельным запуском и копированием файлов когда прогон всех тестов с накатом миграций и данных перевалил за несколько часов

Alexey
24.08.2017
07:41:45
сейчас минут в 15 укладывается

Evgeny
24.08.2017
07:42:14
а что за миграции перед тестами?

Google
Alexey
24.08.2017
07:42:39
ну всмысле подготовки базы, фикстуры и тд

Evgeny
24.08.2017
07:44:14
на постгресе я делал truncate всех таблиц (там он умный кстати, список передаешь он их в правильном порядке очищает), пересоздавать вообще долго, а так 50-80 мс на тест

Андрэ
24.08.2017
07:44:24
ну вот и я про это, что надо очищать а не миграции гонять

Виталий
24.08.2017
08:06:46
Парни, а вопрос о тестировании (конкретнее, Phpunit в Laravel) - как/какую вы БД используете? sqlite в памяти? отдельную тестовую базу? текущую базу с транзакциями? (подразумеваем, что проект работает на MySQL)
Пустая отдельная тестовая БД. Накатываем миграции. Каждый тест чистит данные и прогоняет свои фикстуры. Миграции, пока было не много накатывали каждый тест. Потом оборачивали фикстуры в транзакции и делали роллбэк после теста. Теперь чистим )

Alexander
24.08.2017
08:10:47
мне проще делать через drop table + create table

Виталий
24.08.2017
08:11:13
Это же миграция практически

Alexander
24.08.2017
08:11:14
если схема меняется, то пилим рядом другой sql файл с новой схемой, полученной через экспорт

Evgeny
24.08.2017
08:12:15
а как вы порядок удаления таблиц в mysql соблюдаете кстати?

Яўген
24.08.2017
08:13:26
так чем не устраивает вариант после каждого сценария автоматически чистить измененные таблицы?

Alexander
24.08.2017
08:13:28
я просто вызовы drop table в нужном порядке ставлю. у меня редко бывает такое, что в одном тесте используется более трех таблиц

поэтому в методе setup сначала идут вызовы drop table, потом create table. если тест упал, то у меня остаются данные, на которых тест не прошел

Яўген
24.08.2017
08:15:02
дропать и создавать - очень медленно

Google
Яўген
24.08.2017
08:16:01
кстати, delete * еще быстрее

Alexander
24.08.2017
08:17:02
на SSD норм. разница в выполнении с тестом в котором есть drop и без такого теста -- ~0.5 скунды

Яўген
24.08.2017
08:17:37
разработчики тоже должны програть тесты...

Alexey
24.08.2017
08:17:47
это же очень долго

Evgeny
24.08.2017
08:18:17
а разработчику все не надо прогонять, можно отдельно запустить несколько связанных тестов

Яўген
24.08.2017
08:19:09
ну, ваше решение

Alexander
24.08.2017
08:20:26
вообще, на мой взгляд, если очень много тестов зависят от БД, значит что-то пошло не так в архитектуре

ну или в проекте около сотни таблиц

Виталий
24.08.2017
08:23:17
Кажется, количество интеграционных тестов зависит от количества сценариев использования, а не от архитектуры. Или вы через БД тестируете компоненты?

Alexander
24.08.2017
08:25:26
через бд я тестирую только слой взаимодействия с бд -- репозитории в основном

для всего остального меняю репозитории работающие с бд на memory и забиваю оперативку

еще вариант можно поднять инстанс сервера бд у которого вместо записи на физ. диск будет запись в такую штуку https://www.cyberciti.biz/faq/howto-create-linux-ram-disk-filesystem/

Андрэ
24.08.2017
08:27:16
ну к примеру, при опреденном обращении к одному роуту, по событию должна идти запись в одну из таблиц. вот и проверяю в бд прямо

Ягнёнок
24.08.2017
08:27:25
Здрасти

Kirill
24.08.2017
08:27:51
приветики

Ягнёнок
24.08.2017
08:28:08
Ребят Чем парсить html страницу, которая меняет селекторы раз в несколько часов?

$iD
24.08.2017
08:28:44
symfony/dom-crawler

Ягнёнок
24.08.2017
08:29:13
symfony/dom-crawler
Щя чекну сяп

Google
Андрэ
24.08.2017
08:29:48
а какая разница чем парсить страницу? меняет она селекторы или нет, что, в чем разница?

Alexander
24.08.2017
08:29:55
Какая разница чем парсить. У тебя проблема в том что селекторы меняются раз в несколько часов, а не в том "чем парсить"

Виталий
24.08.2017
08:30:26
через бд я тестирую только слой взаимодействия с бд -- репозитории в основном
Мы также, но вот сущностей у нас полторы сотни. Таблиц, соответсвенно еще больше. Вот мы и уперлись в скорость удаления/создания таблиц.

Alexander
24.08.2017
08:31:19
ну к примеру, при опреденном обращении к одному роуту, по событию должна идти запись в одну из таблиц. вот и проверяю в бд прямо
ну а если для тестов в DI зарегать вместо слоя работающего с бд, слой, работяющий с памятью в качестве хранилища? можно будет уже потом не в бд проверять, а в памяти

Борис
24.08.2017
08:32:00
Парсить HTML на страницах это неуважение к брату :( У тех кого вы парсите точно АПИ нету?

Alexander
24.08.2017
08:32:41
Парсить HTML на страницах это неуважение к брату :( У тех кого вы парсите точно АПИ нету?
ну раз селекторы меняют, значит, поди, не хотят делиться контентом. а кто-то его очень хочет)

Ягнёнок
24.08.2017
08:33:53
а какая разница чем парсить страницу? меняет она селекторы или нет, что, в чем разница?
Я просто знаю как парсить через выбор селектора А как без них не знаю

Alexander
24.08.2017
08:33:57
такое часто можно встретить у букмекиров. Есть такое понятие "Вилки", это когда на разнице коэф в разных конторах, пожно поставить так что при любом раскладе будет профит.

Букмекеры меняют html чтобы их не парсили

Alexander
24.08.2017
08:34:39
Или к примеру бесплатные списки прокси. Там тоже часто можно встретить защиту от парсинга в таком виде.

Андрэ
24.08.2017
08:36:19
Я просто знаю как парсить через выбор селектора А как без них не знаю
если меняют код для защиты от пасинга, то серебрянной пули нет. ни селекторы, ни регулярки (скорее всего) не помогут

Хотя сильно зависит от ситуации. может меняют только селекторы, тогда регулярками можно поработать

Яўген
24.08.2017
08:36:36
одним из преимуществ микросервисной архитектуры, кстати, указывают то, что тесты для каждого сервиса обособлены и проходят горааааздо быстрее

Alexander
24.08.2017
08:37:41
но там часто порт картинкой сделан)

Alexander
24.08.2017
08:38:19
Я просто знаю как парсить через выбор селектора А как без них не знаю
информация в селекторах статичная? или она тоже меняется постоянно?

Ягнёнок
24.08.2017
08:38:28
не меняется только структура

Андрэ
24.08.2017
08:38:54
если ты глазами надешь какие-то закономерности, как инфу получить со страницы, то скорее всего это можно запрограммировать

Google
Alexander
24.08.2017
08:39:12
Alexander
24.08.2017
08:39:37
Alexander
24.08.2017
08:39:53
не меняется только структура
что значит структура? OCR ?

Alexander
24.08.2017
08:40:03
а

не учел, что там могут быть в hidden

и вылезут лишние символы тогда

Alexander
24.08.2017
08:40:37
strip_tags
и получится 192.168.162.324.034.145. Так тоже не получится. Там глубже надо смотреть.

Андрэ
24.08.2017
08:40:47
все забывают про старый добрый xpath
у меня он и пользуется в одном проекта парсинггов новосей. прелестная штука

Alexander
24.08.2017
08:42:09
Подскажите, что означает Missing function doc comment?

Alexander
24.08.2017
08:42:09
не меняется только структура
Там цифры? или текст? Я как вариант делал через OCR. Делаешь картинку, и из куска картинки получается цифры.

Sergey
24.08.2017
08:42:18
а по мне так лучше вкорячить CSS Selector -> XPath, все таки с селекторами удобнее работать

Ягнёнок
24.08.2017
08:49:03
Блин как объяснить Есть страница Там <div class="23dkfdjfkfjdfkjw3rfefvkj"> <div class="lwjp234jb53jb25b3j4kb"> </div></div> Внутри <div>ов информация которую нужно вытащить, структура самого сайта не меняется, то есть все блоки всегда на своих местах Вот каким средством можно сделать так что бы выбрать html->body->вот тут выбрать div третий сверху -> и тут div второй например?

Андрэ
24.08.2017
08:49:44
regex

Alexander
24.08.2017
08:50:30
Через XPath /div[2]/diiv[1]/span[2]

Ягнёнок
24.08.2017
08:51:12
Через XPath /div[2]/diiv[1]/span[2]
О, а так можно? :DDDD Ладно, сейчас гляну, сяп

Alexander
24.08.2017
08:52:50
Еще есть :nth-child()

Андрэ
24.08.2017
08:52:55
А что значит "сяп"? Спасиб типа?

Ягнёнок
24.08.2017
08:53:11
Андрэ
24.08.2017
08:53:32
пойду блесну в нашем чатике старперов. сяп

Google
Kirill
24.08.2017
09:03:28
?

‮‮⚡️???⚡️‮‮
24.08.2017
09:49:11
и получится 192.168.162.324.034.145. Так тоже не получится. Там глубже надо смотреть.
да тут может быть еще динамический js и css, который будет на лету скрывать ненужное (или, например дешифровать или добавлять нужное). и если еще можно css с трудом распарсить и применить, то для js уже нужен вирт браузерный движок

Timur
24.08.2017
13:19:15
помогите пожалуйста // Use your knowledge of strlen(), substr(), and rand() to // print a random character from your name to the screen. $name = "Timur"; $part= strlen($name)-1; print $part; $if=substr($name,rand(0,$part),5); print $if; $og=rand(0,$part),5); print $og;

Alexander
24.08.2017
13:20:44
ну и с чем помочь то?

Андрэ
24.08.2017
13:21:13
Я думал, человек не дописал просто

А он и молчит дальше

Timur
24.08.2017
13:22:35
что-то неверно, не пропускает задание, с пометкой Oops, try again. The random output you printed from your name should be a letter.

Андрэ
24.08.2017
13:23:08
rand возвращает число. Все ок

$og=rand(0,$part),5); это вооще работает?

Timur
24.08.2017
13:28:22
нет parse eror какой-то

Андрэ
24.08.2017
13:28:29
странно

Страница 562 из 1387