簡體   English   中英

使用數據庫測試 Django GraphQL API

[英]Testing Django GraphQL API with database

我在用

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 測試數據庫中讀到在測試運行時看起來是空的,這是從 TestCase 繼承的 GraphQLTestCase 的結果。 這篇文章很舊(2012 年),但我似乎找不到任何關於如何使用正確的測試數據庫的文檔。

對不起,如果我錯過了什么,答案很明顯。

謝謝

在使用 GraphQL 獲取數據之前,請確保您正在創建人員。 也許您需要添加一些裝置或添加setUp方法來添加一些條目。 這是我使用 Pytest 測試 Graphene-Django API 的方法。

@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)

您可以從此處查看完整示例

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM