@pydjango

Страница 487 из 1273
Older
24.08.2017
08:19:20
Ага. т.е. там где мы раньше писали User.objects.create(name='jake'), теперь можем написать UserFactory(name='jake')
Через Faker можно создать нужное количество User с разными именами

Google
Andrey
24.08.2017
08:20:14
Older
24.08.2017
08:20:19
Я про связку. Щас напишу как

amureki
24.08.2017
08:22:06
Потом бах-трах, loaddata
я представил сейчас, как мой CI выглядел бы, где мы берем 20 гб дамп, бам-трах грузим его в CI, тестим, потом сносим...и это каждые N минут

Andrey
24.08.2017
08:23:23
я представил сейчас, как мой CI выглядел бы, где мы берем 20 гб дамп, бам-трах грузим его в CI, тестим, потом сносим...и это каждые N минут
Фантазия это хорошо, безусловно. Она Вам сейчас поможет. Смотрите. У нас есть базовая структура. Мы создаем в ней минимальный набор данных. Далее, делаем дамп, который и используем потом для тестов.

Представляете?

amureki
24.08.2017
08:23:51
Далее, представим, что у нас какая-то фича с некоторыми миграциями....ты льешь свой дамп, далее ты обязан во время тестов накатывать миграции все, потом только сможешь протестировать фичу, иначе она свалится из-за бд

Older
24.08.2017
08:25:36
https://pastebin.com/ZGjUHmXu

Как-то так. Потом UserFactory.create_batch(1000)

И тебе создаст 1000 юзеров с рандомными name

Andrey
24.08.2017
08:26:45
Как-то так. Потом UserFactory.create_batch(1000)
Спасибо, но как я уже и сказал, меня не интересует подобное.

Причём сразу сказал

Google
Andrey
24.08.2017
08:26:59
Что не нужны мне фабрики

хоть они 1 лям генерят.

Я могу юзать фабрики, не отрицаю

и это выход, оно будет работать

и есть решения удобные для них

и это здорово\полезно

но сейчас

меня интересуют именно фикстуры

джанговские

и их импорт в тесты.

Вы чет не так делаете. Вместо схемы: ответ на вопрос, предложение сделать лучше и обоснование - Вы делаете - предложение сделать лучше.

Упускаете две важные части

Одну из них критически важную.

Дмитрий
24.08.2017
08:29:12
Одну из них критически важную.
Просто нужно делать лучше

?

amureki
24.08.2017
08:29:41
Воот, так вопрос тоже без обоснования, почему надо делать через одно место, а не по best practices? Или я упустил это обоснование?

Older
24.08.2017
08:30:10
Не понимаю, в чем смысл подтягивать фикстуры для тестов

Andrey
24.08.2017
08:31:30
Воот, так вопрос тоже без обоснования, почему надо делать через одно место, а не по best practices? Или я упустил это обоснование?
от чего же. Я вижу в этом неплохое решение моей конкретной задачи. Которое объективно лучше (в том виде, как я это себе представляю, не работает же). И кода меньше и производителность не страдает.

+ без сторонних расширений

+ у Django из коробки что-то подобное есть.

Google
amureki
24.08.2017
08:32:25
Кода меньше? Мы как-то о разном, похоже, говорим... Придется городить код на создание дампа, его загрузку и потом снос...опять же, откуда свежий дамп с миграциями фичи берется не понимаю

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

+ без сторонних расширений
И это очень часто минус - когда люди предпочитают городить велосипеды без документации и прочего, которые потом не поддерживают, которые потом новые разработчики не понимают вместо того, чтоб заиспользовать популярный пакет, где все аккуратно расписано, и который развивается

Older
24.08.2017
08:34:26
Это каждый раз заливать дамп в тестовую базу? Бред какой-то

Andrey
24.08.2017
08:35:34
Кода меньше? Мы как-то о разном, похоже, говорим... Придется городить код на создание дампа, его загрузку и потом снос...опять же, откуда свежий дамп с миграциями фичи берется не понимаю
1. Код на создание дампа - это одна команда в консоли. Которая делается по мере роста функционала и легко редактируется (допустим, выпилить 10кк объектов двумя кликами); 2. Код на его загрузку - отсутствует, если верить документации; 3. Берется, когда тестируется новый функционал. Путем ввода ручками одной комманды в консоли и, возможно, два клика для небольшого редактирования дампа;

amureki
24.08.2017
08:36:29
Так так так Вот погоди Сам дамп то как генерируется?

тот самый файлик users.json, к примеру

Older
24.08.2017
08:37:39
ручками))

amureki
24.08.2017
08:37:40
и как чувак, вводящий с фичей новое текстовое поле в модели User обновляет этот файлик?

добавили поле description, где надо генерить некоторое количество символов, скажем 500 текста

Andrey
24.08.2017
08:41:11
manage.py dumpdata, открываем созданный файл, оставляем по 10-20 записей, нужных нам (для моей задачи - секунд 60, если смотреть телек параллельно). И, профит, не?

Они все отсортированы

убить хоть 10кк не проблема же

Дмитрий
24.08.2017
08:41:44
Бля, редактировать дамп с 10кк

Мсье Вы знаете толк

Call Me Maybe
24.08.2017
08:41:56
>смотреть телек никакого профита, абсолютно

amureki
24.08.2017
08:42:17
manage.py dumpdata, открываем созданный файл, оставляем по 10-20 записей, нужных нам (для моей задачи - секунд 60, если смотреть телек параллельно). И, профит, не?
то есть, пишет фичу, чтоб протестировать ее быстро, он сначала должен руками в своейл локальной базе добавить сотню юзеров, поправить каждому дескрипшн, потом сделать дамп из этого?

и только потом запустить тесты!

Andrey
24.08.2017
08:42:33
Такс, ребят. Я Вас прекрасно понимаю.

Я спросил о существуеющей у Джанги технологии

Google
Andrey
24.08.2017
08:42:57
Мне никто, ничего не объяснил.

Но

Но!

Дмитрий
24.08.2017
08:43:06
Я спросил о существуеющей у Джанги технологии
Я думаю таким никто не занимается

amureki
24.08.2017
08:43:07
а если опечатался в имени поля повторяем заново, делаем дамп, редактируем снова файл руками, удаляем лишнее, добавляем нужное, делаем еще раз дамп и запускаем тесты

Andrey
24.08.2017
08:43:13
Накидали over90000 вариантов, как сделать иначе.

Ок, я Вас понял.

Не вижу смысла продолжать дискуссию.

amureki
24.08.2017
08:43:26
Я спросил о существуеющей у Джанги технологии
да, мы же рассказали тебе про фабрики в фикстурах и прочие вещи

Andrey
24.08.2017
08:43:35
Да-да

Рассказали

Потом ещё рассказали

Я пошел.

Пасиб

amureki
24.08.2017
08:43:56
ну погоди, я ведь пытаюсь понять, как ты это делаешь, чтоб понять причину твоего непонимания и непринятия

Andrey
24.08.2017
08:44:13
Не-не, прости. Я сам разберусь.

amureki
24.08.2017
08:44:35
извини, если мои вопросы показались грубыми, но этот способ тестирования очень странно выглядит в моем понимании

Andrey
24.08.2017
08:45:13
Я ведь, скорее всего, буду юзать фабрики, ведь это действительно эффективно и полезность сего решения возрастает с увеличением функционала сервиса.

amureki
24.08.2017
08:45:14
Не-не, прости. Я сам разберусь.
хорошо, прошу прощения http://blog.qax.io/complex-pytest-django-example/ вот примерчик простой теста

Google
amureki
24.08.2017
08:45:32
https://michaelvdw.nl/code/adding-pytest-to-your-django-project/ и вот еще туда же

Spacehug
24.08.2017
08:45:41
> complex > простой ))))

amureki
24.08.2017
08:45:52
все как мы писали - с пайтестом и фабриками, best practices

> complex > простой ))))
название не соответствует содержанию :)

Call Me Maybe
24.08.2017
08:47:27
Теперь привыкать к новой аватарке @amureki ...

amureki
24.08.2017
08:47:48
Теперь привыкать к новой аватарке @amureki ...
простите, я решил пододвинуть котов :)

Alexander
24.08.2017
08:49:46
Хочу взять, dumpdata
dumpdata в реальной жизни не работает, потому что обычно базы с овердофига данных, там не получится использовать такую команду... я вообще удивляюсь, что её не удалили

Andrey
24.08.2017
08:50:50
Я даже не сам к ней пришел. Кто-то подсунул

Мол, сделай фикстуры.

Я такой, ок

Alexander
24.08.2017
08:51:53
ну, в общем, она нормально работает, только если это какая-то пустая тестовая база, а если production - там так или иначе будет SQL

а loaddata в тестах можно вызвать как команду

но, опять же, возможно, sql будет удобнее

Artem
24.08.2017
08:53:09
но, опять же, возможно, sql будет удобнее
О чем сырбор идет?) Привет!

Alexander
24.08.2017
08:53:41
а я не знаю

?)

ну, в общем, fixture удобно использовать для создания тестовых данных) и там из тестов можно выполнять loaddata, а вот применение dumpdata я не увидел, мне кажется это ненужным, дампить лучше в SQL тогда уж и если есть такая потребность, то и fixture тоже переводить в SQL тогда

мне кажется, в будущем эти fixtures вообще выкинут из Django

но я не уверен

amureki
24.08.2017
08:56:20
На сложных базах у меня никогда не выходило нормально сдампить и слоадить через эти команды через бд дампы делал всегда в итоге

Страница 487 из 1273