mirror of
				https://github.com/graphql-python/graphene.git
				synced 2025-11-04 09:57:41 +03:00 
			
		
		
		
	* actually run the tests in python 3.12 and 3.13 * remove snapshottest from the example tests so that the tests pass in 3.12 and 3.13 again * remove the section about snapshot testing from the testing docs because the snapshottest package doesn't work on Python 3.12 and above * fix assertion for badly formed JSON input on Python 3.13 * fix deprecation warning about datetime.utcfromtimestamp()
		
			
				
	
	
		
			72 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
===================
 | 
						||
Testing in Graphene
 | 
						||
===================
 | 
						||
 | 
						||
 | 
						||
Automated testing is an extremely useful bug-killing tool for the modern developer. You can use a collection of tests – a test suite – to solve, or avoid, a number of problems:
 | 
						||
 | 
						||
- When you’re writing new code, you can use tests to validate your code works as expected.
 | 
						||
- When you’re refactoring or modifying old code, you can use tests to ensure your changes haven’t affected your application’s behavior unexpectedly.
 | 
						||
 | 
						||
Testing a GraphQL application is a complex task, because a GraphQL application is made of several layers of logic – schema definition, schema validation, permissions and field resolution.
 | 
						||
 | 
						||
With Graphene test-execution framework and assorted utilities, you can simulate GraphQL requests, execute mutations, inspect your application’s output and generally verify your code is doing what it should be doing.
 | 
						||
 | 
						||
 | 
						||
Testing tools
 | 
						||
-------------
 | 
						||
 | 
						||
Graphene provides a small set of tools that come in handy when writing tests.
 | 
						||
 | 
						||
 | 
						||
Test Client
 | 
						||
~~~~~~~~~~~
 | 
						||
 | 
						||
The test client is a Python class that acts as a dummy GraphQL client, allowing you to test your views and interact with your Graphene-powered application programmatically.
 | 
						||
 | 
						||
Some of the things you can do with the test client are:
 | 
						||
 | 
						||
- Simulate Queries and Mutations and observe the response.
 | 
						||
- Test that a given query request is rendered by a given Django template, with a template context that contains certain values.
 | 
						||
 | 
						||
 | 
						||
Overview and a quick example
 | 
						||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 | 
						||
 | 
						||
To use the test client, instantiate ``graphene.test.Client`` and retrieve GraphQL responses:
 | 
						||
 | 
						||
 | 
						||
.. code:: python
 | 
						||
 | 
						||
    from graphene.test import Client
 | 
						||
 | 
						||
    def test_hey():
 | 
						||
        client = Client(my_schema)
 | 
						||
        executed = client.execute('''{ hey }''')
 | 
						||
        assert executed == {
 | 
						||
            'data': {
 | 
						||
                'hey': 'hello!'
 | 
						||
            }
 | 
						||
        }
 | 
						||
 | 
						||
 | 
						||
Execute parameters
 | 
						||
~~~~~~~~~~~~~~~~~~
 | 
						||
 | 
						||
You can also add extra keyword arguments to the ``execute`` method, such as
 | 
						||
``context``, ``root``, ``variables``, ...:
 | 
						||
 | 
						||
 | 
						||
.. code:: python
 | 
						||
 | 
						||
    from graphene.test import Client
 | 
						||
 | 
						||
    def test_hey():
 | 
						||
        client = Client(my_schema)
 | 
						||
        executed = client.execute('''{ hey }''', context={'user': 'Peter'})
 | 
						||
        assert executed == {
 | 
						||
            'data': {
 | 
						||
                'hey': 'hello Peter!'
 | 
						||
            }
 | 
						||
        }
 |