С Новым годом! Форум программистов, компьютерный форум, киберфорум
Python: Django
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
15 / 2 / 1
Регистрация: 18.09.2015
Сообщений: 227
1

Стоит ли писать функциональные и unit тесты для простого приложения?

27.08.2020, 01:26. Показов 473. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток. Заканчиваю писать один из первых учебных проектов. Он не то, чтоб сложный, поэтому возник вопрос. Имеет смысл писать модульные и функциональные тесты на приложение, или достаточно просто использовать логгирование и тестировать приложение вручную?
Могут ли грамотно написанные логи в каком-то смысле заменить unit-tests, или стоит потратить время на написание последних?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.08.2020, 01:26
Ответы с готовыми решениями:

Как правильно писать функциональные тесты для сервисов на scala?
Всем добрый день! Хотел узнать может быть кто нибудь поможет или подскажет книги, или туториалы, с...

Как лучше всего писать Unit тесты для кода?
Как лучше всего писать тесты для кода? В том плане что к примеру есть специальные библиотеки и...

Unit-test для простого консольного приложения
Делаю лабу, но никак не могу разобраться и сделать юнит тест для консольного приложения, которое...

Unit тесты как писать?
ребята, помогите один unit тест написать на jest, не получается Например: 10 7 12 3 9...

Написал Unit тесты для алгоритма сортировки, Можно ли как-то написать эти тесты через TestCase или TestCaseSource?
public class TestsSort { public void...

10
1042 / 577 / 242
Регистрация: 15.01.2019
Сообщений: 2,178
Записей в блоге: 1
27.08.2020, 16:29 2
Цитата Сообщение от Dancing_god Посмотреть сообщение
Стоит ли писать функциональные и unit тесты для простого приложения?
Стоит.

Добавлено через 31 секунду
Цитата Сообщение от Dancing_god Посмотреть сообщение
Могут ли грамотно написанные логи в каком-то смысле заменить unit-tests
У них совершенно разное назначение.
1
Автоматизируй это!
Эксперт Python
7213 / 4709 / 1224
Регистрация: 30.03.2015
Сообщений: 13,416
Записей в блоге: 29
27.08.2020, 16:37 3
Dancing_god, тесты всегда имеет смысл писать,прочти мою подпись.
Ко всей прочей пользе, если набьешь руку в их написании, то приобретешь очень полезный и ценимый навык
0
15 / 2 / 1
Регистрация: 18.09.2015
Сообщений: 227
28.08.2020, 15:11  [ТС] 4
Цитата Сообщение от Welemir1 Посмотреть сообщение
тесты всегда имеет смысл писать
Хорошо, вас понял. А как быть, если необходимо создать нового пользователя в тестовой базе данных? И при этом тестируемая функция всё, что надо, принимает из объекта request. Это ведь надо протаскивать его через бэкенды аутентификации, sessions_middleware и так далее, или вручную изменять объект request, дописывая ему request.session и т.д.? Просто тест тогда получается весьма громоздким.
0
Автоматизируй это!
Эксперт Python
7213 / 4709 / 1224
Регистрация: 30.03.2015
Сообщений: 13,416
Записей в блоге: 29
28.08.2020, 15:46 5
Dancing_god, тест должен быть максимально изолирован от всего, присылай поддельный объект, формируй в нем просто нужные атрибуты (duck typing).
0
15 / 2 / 1
Регистрация: 18.09.2015
Сообщений: 227
28.08.2020, 19:00  [ТС] 6
Цитата Сообщение от Welemir1 Посмотреть сообщение
тест должен быть максимально изолирован от всего, присылай поддельный объект, формируй в нем просто нужные атрибуты (duck typing).
Спасибо, буду пробовать.

Добавлено через 3 часа 6 минут
Цитата Сообщение от Welemir1 Посмотреть сообщение
Dancing_god, тест должен быть максимально изолирован от всего, присылай поддельный объект, формируй в нем просто нужные атрибуты (duck typing).
Еще такой вопрос: как правильно подключить тестовую базу данных для функционального теста? Тестирую с помощью Selenium-a, но через команду:
Код
python3 manage.py test
В итоге надпись о создании тестовой базы данных появляется, но видимо она создается только для операций, предполагаемых unit тестами (т.е. создание объектов БД напрямую и т.д.). А действия Seleniuma в итоге модифицируют существующую базу данных.
Как в итоге сделать так, чтобы Селениум работал с тестовой базой данных, которая в итоге также удалялась бы?
0
Автоматизируй это!
Эксперт Python
7213 / 4709 / 1224
Регистрация: 30.03.2015
Сообщений: 13,416
Записей в блоге: 29
28.08.2020, 19:09 7
Dancing_god, ничего не понял. Селениум работает с браузером, для него пишут не юнит тесты а уже системные, уи-тесты, енд-ту-енд, то есть задействуются все уровни приложения. Обычно для таких тестов просто есть тестовый стенд где равзернута и БД тестовая и задеплоено веб-приложение, которое данные берет из этой бд. А мы говорили про юнит-тесты, это самый низкий уровень, проверка минимально возможного блока кода. Селениум это уже верх пирамиды тестирования, а юниты -основание
0
15 / 2 / 1
Регистрация: 18.09.2015
Сообщений: 227
28.08.2020, 19:29  [ТС] 8
Цитата Сообщение от Welemir1 Посмотреть сообщение
енд-ту-енд
Я под функциональными тестами как раз end-to-end и имел в виду. И да, понятное дело, что Selenium не используется для низкоуровневых тестов. Просто с запуском функциональных тестов, как просто скриптов, без джанговской команды test, возникали проблемы, связанные с импортом модулей из родительской директории. Поэтому временно запускаю их как unit тесты.
Цитата Сообщение от Welemir1 Посмотреть сообщение
для таких тестов просто есть тестовый стенд где равзернута и БД тестовая и задеплоено веб-приложение
А на стадии разработки приложения есть варианты прописать другую базу данных для функциональных тестов и настроить ее так, чтобы она очищалась после каждого теста?
0
Автоматизируй это!
Эксперт Python
7213 / 4709 / 1224
Регистрация: 30.03.2015
Сообщений: 13,416
Записей в блоге: 29
28.08.2020, 19:59 9
Цитата Сообщение от Dancing_god Посмотреть сообщение
А на стадии разработки приложения есть варианты прописать другую базу данных для функциональных тестов и настроить ее так, чтобы она очищалась после каждого теста?
да, так и делают, обычно или пустая БД или с минимумом данных, можно после тестов запросом к бд все удалять лишнее, пред стартом что-то создавать если нужно.
0
15 / 2 / 1
Регистрация: 18.09.2015
Сообщений: 227
28.08.2020, 21:44  [ТС] 10
Цитата Сообщение от Welemir1 Посмотреть сообщение
да, так и делают, обычно или пустая БД или с минимумом данных, можно после тестов запросом к бд все удалять лишнее, пред стартом что-то создавать если нужно.
Наверное такого нет, но спрошу на всякий случай. Существует какой-нибудь хитрый способ использовать функции, работающие с дефолтной базой данных, с тестовой базой данных? Т.е. как-нибудь в файле, где содержатся тесты, выбрать вторую базу данных, прописанную в DATABASE в settings.py, и заставить тестируемые функции работать с ней, а не со стандартной.
Просто не очень хочется ради теста менять базу данных в настройках.
0
Автоматизируй это!
Эксперт Python
7213 / 4709 / 1224
Регистрация: 30.03.2015
Сообщений: 13,416
Записей в блоге: 29
28.08.2020, 22:50 11
Dancing_god, не совсем понимаю контекст, для юнит-тестов конечно можно на лету бд создавать или вообще хранить ее в памяти, а вот если ты опять про селениум, то веб приложение перед деплоем должно же получить настройки нужной бд. Это в принципе реально, но надо будет тестирование разделить на этапы: создание бд, подмена опций в конфиге, деплой приложения, запуск тестов.
0
28.08.2020, 22:50
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.08.2020, 22:50
Помогаю со студенческими работами здесь

Unit тесты для сайта
Добрый вечер. Уважаемые форумчане можете объяснить как пользоваться unit тестами. Надоело вручную...

Модульные тесты. Unit тесты. Доработка классов
Нужна помощь в создании модульных тестов для прописанных класов будущей программы. xUnit. Возможно...

Стоит ли писать Android-приложения в Eclipse?
Всем добрый день! Помогите, пожалуйста, советом. В гугле я не смог найти ответ на свой вопрос....

Нужны исходники простого простого приложения под Android для примера
можете дать ссылку на приложение под андроид?не Hello Word а какое нибудь другое но тоже простое на...

Unit тесты для методов скрипта Unity
С Unity не знаком, но знаю что делает скрипт ниже. Этот скрипт из простой игры на андроид (надо...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Что такое HCL Notes и как с ним работать
InfoMaster 10.01.2025
HCL Notes (ранее известный как IBM Notes и Lotus Notes) представляет собой комплексную платформу для совместной работы и обмена информацией в корпоративной среде. Это многофункциональное решение,. . .
Как работать с Git из Windows и Visual Studio
InfoMaster 10.01.2025
Работа с Git в Windows Работа с Git в операционной системе Windows может быть осуществлена с помощью различных инструментов, каждый из которых обладает своими уникальными возможностями и. . .
Аналог оператора switch case в Python
InfoMaster 10.01.2025
Оператор switch case используется в программировании для выбора одного из нескольких вариантов исполнения кода. Однако в языке Python этот оператор отсутствует. Понимание аналогов switch case в. . .
Отличия абстрактного класса от интерфейса
InfoMaster 10.01.2025
В современной разработке программного обеспечения существуют два основных механизма реализации абстракции: абстрактные классы и интерфейсы. Эти инструменты, хотя и схожи в своей основной цели -. . .
Как работать в Git
InfoMaster 10.01.2025
Git — это одна из наиболее популярных систем контроля версий, которая активно используется разработчиками по всему миру. Она позволяет эффективно управлять изменениями в коде, координировать работу. . .
Реализация передвижения персонажа в Unity3d на C#
InfoMaster 10.01.2025
Реализация передвижения персонажа в Unity3D начинается с правильной настройки проекта. Этот этап критически важен для создания отзывчивого и плавного управления. Рассмотрим основные шаги для создания. . .
Docker: руководство для начинающих
InfoMaster 10.01.2025
В современном мире разработки программного обеспечения контейнеризация стала неотъемлемой частью процесса создания и развертывания приложений. Docker, как ведущая платформа контейнеризации, произвела. . .
Книги и учебные ресурсы по C#
InfoMaster 08.01.2025
Базовые учебники и руководства Одной из лучших книг для начинающих является "C# 10 и . NET 6 для начинающих" Эндрю Троелсена и Филиппа Джепикса . Книга последовательно раскрывает основные концепции. . .
Что такое NullReferenceEx­­­ception и как исправить?
InfoMaster 08.01.2025
NullReferenceException - одно из самых распространенных исключений, с которым сталкиваются разработчики на C#. Это исключение возникает при попытке обратиться к членам объекта (методам, свойствам или. . .
Что такое Null Pointer Exception (NPE) и как это исправить?
InfoMaster 08.01.2025
Null Pointer Exception (NPE) - это одно из самых распространенных исключений в Java, которое возникает при попытке использовать ссылку на объект, значение которой равно null. Это исключение относится. . .
Русский язык в консоли C++
InfoMaster 08.01.2025
При разработке программ на C++ одной из частых проблем, с которой сталкиваются русскоязычные программисты, является корректное отображение кириллицы в консольных приложениях. Эта проблема особенно. . .
Telegram бот на C#
InfoMaster 08.01.2025
Разработка ботов для Telegram стала неотъемлемой частью современной экосистемы мессенджеров. C# предоставляет мощный и удобный инструментарий для создания разнообразных ботов, от простых. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru