Тестирование Django GraphQL API с базой данных

я использую

from graphene_django.utils.testing import GraphQLTestCase

для реализации моих тестов. Однако результат от

class PeopleTests(GraphQLTestCase):
  GRAPHQL_SCHEMA = schema

  def test_all_person_query_admin_token(self):

    response = self.query(
        '''
       query getPersons{
            persons{
            firstName,
            lastName
            }
        }
        ''',
        op_name='persons',
        headers={'HTTP_AUTHORIZATION': f'JWT eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiZXhwIjoxNTY2MTk4Mzg5LCJvcmlnSWF0IjoxNTY2MTk4MDg5fQ.P4u7PNKPLFsc4dvhBLw-EfuN8jg2d-lqdZjWruEDlpc'}
    )

всегда возвращает пустой список Person. Я прочитал в Тестовая база данных Django выглядит пустой, пока тест выполняется что это результат наследования GraphQLTestCase от TestCase. Этот пост очень старый (2012 г.), но я не могу найти документацию о том, как использовать правильную тестовую базу данных.

Извините, если я что-то упустил, а ответ был очевиден.

Спасибо


person bwright    schedule 04.01.2020    source источник


Ответы (1)


Перед получением данных с помощью GraphQL убедитесь, что вы создаете людей. Возможно, вам нужно добавить некоторые приборы или добавить метод setUp для добавления некоторых записей. Вот как я тестировал Graphene-Django API с помощью Pytest.

@pytest.mark.django_db
class TestBlogSchema(TestCase):

    def setUp(self):
       self.client = Client(schema)
       self.blog = mixer.blend(Blog)

    def test_single_blog_query(self):
       response = self.client.execute(single_blog_query, variables={"id": self.blog.id})
       response_blog = response.get("data").get("blog")

       assert response_blog["id"] == str(self.blog.id)

Вы можете ознакомиться с полным примером по адресу здесь.

person Ijharul Islam    schedule 12.01.2020