diff --git a/graphene/core/schema.py b/graphene/core/schema.py index d3c728d1..a175b59d 100644 --- a/graphene/core/schema.py +++ b/graphene/core/schema.py @@ -6,6 +6,7 @@ from graphql.core.execution.middlewares.sync import \ SynchronousExecutionMiddleware from graphql.core.type import GraphQLSchema as _GraphQLSchema from graphql.core.utils.introspection_query import introspection_query +from graphql.core.utils.schema_printer import print_schema from graphene import signals @@ -89,6 +90,9 @@ class Schema(object): objecttype) and issubclass(objecttype, BaseObjectType): return objecttype + def __str__(self): + return print_schema(self.schema) + def setup(self): assert self.query, 'The base query type is not set' self.T(self.query) diff --git a/graphene/core/tests/test_schema.py b/graphene/core/tests/test_schema.py index 5dcf68a4..189111a1 100644 --- a/graphene/core/tests/test_schema.py +++ b/graphene/core/tests/test_schema.py @@ -152,3 +152,22 @@ def test_lazytype(): schema.query = MyType assert schema.T(t) == schema.T(MyType) + + +def test_schema_str(): + expected = """ +interface Character { + name: String +} + +type Human implements Character { + name: String + friends: [Character] + pet: Pet +} + +type Pet { + type: String +} +""".lstrip() + assert str(schema) == expected