Исходя из реальной ситуации, в моем проекте django есть три модели, каждая из которых имеет вид CRUD.
models.py
class Model1(models.Model)
pass
class Model2(models.Model)
pass
class Model3(models.Model)
pass
в views.py они корректно связаны с BSModalCreateView, BSModalReadView, ... они также вводятся в urls.py проекта django (он отлично работает в системе;) )
НО!
Теперь я пытаюсь проверить их правильную функциональность, начиная с достижимости по URL. Итак, я начинаю в test_views.py с:
test_views.py
import pytest
from django.urls import reverse
from ..models import *
@pytest.mark.django_db
class TestBodyvalueRUD(object):
@pytest.fixture(autouse=True)
def setup_stuff(self, db):
Model1.objects.create(...)
@pytest.mark.parametrize("url_location",
['Project/CRUD_Model1/read/0',
'Project/CRUD_Model1/update/0',
'Project/CRUD_Model1/delete/0',
])
def test_view_url_exists_at_desired_location(self, client, url_location):
response = client.get(url_location)
assert response.status_code == 301
@pytest.mark.parametrize("url_name", [...])
def test_view_url_accessible_by_name(self,client, url_name):
pass
@pytest.mark.parametrize("url_name, template_file", [...])
def test_view_uses_correct_template(self, client, url_name, template_file):
pass
- Как правильно параметризовать объекты модели? Поскольку полный набор тестов идентичен, я не хочу создавать его для всех моделей (избыточность кода).
- Я также не очень доволен стилем параметризации методов класса - во всяком случае, я угадайте необходимость переместить
- Кстати - в реальном коде я также сталкиваюсь с проблемами при взаимодействии с БД в тесте django БД. Кажется, я борюсь с этими приборами больше, чем ожидалось: / Объект созданных моделей не может быть запрошен ...
СПАСИБО!