Основная цель данного проекта - это практика в написании тестов. Я реализовала тесты для двух небольших проектов – для сервиса с заметками пользователей (тестировала на unittest) и для новостного сайта (использовала pytest).
- Django
- Unittest
- Pytest
Dev
└── django_testing
├── ya_news
│ ├── news
│ │ ├── fixtures/
│ │ ├── migrations/
│ │ ├── pytest_tests/ <- Директория с тестами pytest для проекта ya_news
│ │ ├── __init__.py
│ │ ├── admin.py
│ │ ├── apps.py
│ │ ├── forms.py
│ │ ├── models.py
│ │ ├── urls.py
│ │ └── views.py
│ ├── templates/
│ ├── yanews/
│ ├── manage.py
│ └── pytest.ini
├── ya_note
│ ├── notes
│ │ ├── migrations/
│ │ ├── tests/ <- Директория с тестами unittest для проекта ya_note
│ │ ├── __init__.py
│ │ ├── admin.py
│ │ ├── apps.py
│ │ ├── forms.py
│ │ ├── models.py
│ │ ├── urls.py
│ │ └── views.py
│ ├── templates/
│ ├── yanote/
│ ├── manage.py
│ └── pytest.ini
├── .gitignore
├── README.md
├── requirements.txt
└── structure_test.py
В файле test_routes.py:
- Главная страница доступна анонимному пользователю.
- Аутентифицированному пользователю доступна страница со списком заметок notes/, страница успешного добавления заметки done/, страница добавления новой заметки add/.
- Страницы отдельной заметки, удаления и редактирования заметки доступны только автору заметки. Если на эти страницы попытается зайти другой пользователь — вернётся ошибка 404.
- При попытке перейти на страницу списка заметок, страницу успешного добавления записи, страницу добавления заметки, отдельной заметки, редактирования или удаления заметки анонимный пользователь перенаправляется на страницу логина.
- Страницы регистрации пользователей, входа в учётную запись и выхода из неё доступны всем пользователям.
В файле test_content.py:
- Отдельная заметка передаётся на страницу со списком заметок в списке object_list в словаре context.
- В список заметок одного пользователя не попадают заметки другого пользователя.
- На страницы создания и редактирования заметки передаются формы.
В файле test_logic.py:
- Залогиненный пользователь может создать заметку, а анонимный — не может.
- Невозможно создать две заметки с одинаковым slug.
- Если при создании заметки не заполнен slug, то он формируется автоматически, с помощью функции pytils.translit.slugify.
- Пользователь может редактировать и удалять свои заметки, но не может редактировать или удалять чужие.
В файле test_routes.py:
- Главная страница доступна анонимному пользователю.
- Страница отдельной новости доступна анонимному пользователю.
- Страницы удаления и редактирования комментария доступны автору комментария.
- При попытке перейти на страницу редактирования или удаления комментария анонимный пользователь перенаправляется на страницу авторизации.
- Авторизованный пользователь не может зайти на страницы редактирования или удаления чужих комментариев (возвращается ошибка 404).
- Страницы регистрации пользователей, входа в учётную запись и выхода из неё доступны анонимным пользователям.
В файле test_content.py:
- Количество новостей на главной странице — не более 10.
- Новости отсортированы от самой свежей к самой старой. Свежие новости в начале списка.
- Комментарии на странице отдельной новости отсортированы в хронологическом порядке: старые в начале списка, новые — в конце.
- Анонимному пользователю недоступна форма для отправки комментария на странице отдельной новости, а авторизованному доступна.
В файле test_logic.py:
- Анонимный пользователь не может отправить комментарий.
- Авторизованный пользователь может отправить комментарий.
- Если комментарий содержит запрещённые слова, он не будет опубликован, а форма вернёт ошибку.
- Авторизованный пользователь может редактировать или удалять свои комментарии.
- Авторизованный пользователь не может редактировать или удалять чужие комментарии.