170 похожих чатов

Добрый день! Какой есть удобный способ тестировать и писать запросы

через ORM? Я на текущий момент захожу в django shell и каждый раз импортирую нужные модули после чего могу приступить к написанию, а в случае внесении правок в модуль все приходится делать повторно. Это не быстро и не удобно, есть лучший способ?

20 ответов

14 просмотров

Делать как белые люди - писать автотесты.

Михаил- Автор вопроса

Это если уже все написано и есть что проверять, а я еще не набил руку в обращении к ORM, иначе говоря сам запрос еще пока вызывает трудности.

ммм, нет. Гугли TDD

Михаил- Автор вопроса

что простите?

test driven development

Разработка через тестирование если я не ошибаюсь.

Михаил- Автор вопроса

А, понял о чем речь. Да, разработка через тестирование. Все равно к этому тоже надо приийти, освоив сначала базу.

Если ты экспериментируешь с кодом джанги, то shell тебе будет достаточно. Если же, как ты говоришь, тебе приходится перезагружать его все время, то значит что у тебя там уже не просто отдельные строчки кода, а блоки с какой-то логикой. На этом месте у тебя 2 пути: либо ручками проверять их работоспособность, например на дев сервере или дебаггером. Либо итеративный подход через автотесты.

кстати, метод релоад, работает? не проверяли?

Михаил- Автор вопроса

А это вот не в курсе

shell имеет св-во закрываться. как вариант - tracing.py в нем устанавливаешь окружение как в manage.py далее django.setup() и потом импорты моделей и запросы вариант 2. тесты пишем, но раннер тестов переопределяем так, чтобы каждый раз не пересоздавал бд, получается как вариант 1 пихчарм еще и позволит из ide по одному запускать

> shell имеет св-во закрываться. Скорее всего ты имел в виду закрытие соединения с БД. Просто сам по себе shell не закрывается. Соединение можно там же пересоздать. > tracing.py Зачем? В шелле можно включить дебаг мод чтобы вызывать ipdb на исключения > но раннер тестов переопределяем Не надо переопределять раннер. Достаточно просто запускать с ключиком keepdb

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

По первым двум пунктам я как раз и понял что надо писать тесты. Т.е. это выраженные повторяющиеся действия требующие автоматизации. https://docs.djangoproject.com/en/3.1/ref/django-admin/#cmdoption-test-keepdb

Первые 2 пункта это проверить гипотезу быстро не в 2 строки, shell субъективно уеб-кий

посмотрел, keepdb еще крутить настройки все равно придется чтобы подкидывать бд не тестовую, и keepdb снесет при повторном исполнение предыдущее наполнение вне теста скорее всего teardown_databases еще зачищает чета уже лень ковырять, короче ниче не поменялось зачем это все нужно? в идеальном мире все пишут тесты сразу, бд небольшая и все зачипись юзеры счастливы но бывает что база уже набита, проект старый юзер кидает что его емейл не але и чтобы не писать у нас с тестами все ок а вы козлы делается слепок бд и гоняем orm по его мылу и гипотезы почему отвалилось, и чтобы каждый раз не ждать пока прогонится наполнние на живой базе потыкали тест все ок и уже закинули в CI пусть там себе тормозит

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

такое чувство что никогда с легаси не сталкивался -могу только позавидовать

Скорее наоборот - у меня за 5 лет только один проект был который я сам начал с нуля. Никогда даже в голову не приходило писать тесты против "боевого" дампа.

офтоп пошел, я как раз часто пытался реанимировать то что переписывать заново еще денег нет или уже нет

Похожие вопросы

Обсуждают сегодня

А чем вам питонисты не угодили?😂
.
79
Язык Си можно выучить за день? По книжке ANSI C на 230 страниц
Vincent Vegan
29
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
Есть какой-нибудь для Delphi/FPC T*Compression(Decompression)Stream на базе LZ4/Zstd/любой другой быстрый(и хорошо сжимающий) алгоритм А ещё лучше в pure pascal А ещё лучше од...
notme
8
Dim Dim, [02.07.2024 11:07] DB 0x62 Dim Dim, [02.07.2024 11:07] DB 0x66 Dim Dim, [02.07.2024 11:07] кто пояснит что это?
Dim Dim
14
Ошибка: segmentation fault (core dumped) Код: pastebin.com/BEsNNSSV Сообщение от компилятора: отсутствует ОС: Arch Linux Ядро: x86_64 Linux 6.9.7-arch1-1 Процессор: Intel Cele...
sec
4
Ещё такой вопрос. Мне необходимо хранить пароль пользователя локально. Для этого планирую использовать ini файл. Это для автозаполнения полей логин и пароль при авторизации. Е...
Евгений
19
Ребят, а за скок можно впарить анон чат с апишкой и веб админкой ?
Eugene Неелов
15
Кстати, я тут еще с одной темой столкнулся, вот учу я C++, на таком то ресурсе, а остальные постоянно советуют практиковаться, что то писать, проекты, но как писать если вот т...
aaswq1
7
А как лучше конвертировать физический адрес в виртуальный при маппинге? В случае ядра у меня, например, direct mapping, первые 768МБ я как есть мапплю в higher half, а остальн...
Evg Resh
26
Карта сайта