Как параметризовать django объекты модели для pytest модальных представлений - PullRequest
0 голосов
/ 06 января 2020

Исходя из реальной ситуации, в моем проекте 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 БД. Кажется, я борюсь с этими приборами больше, чем ожидалось: / Объект созданных моделей не может быть запрошен ...

СПАСИБО!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...