42 / 65 · 14 API Testing Fundamentals · GraphQL Testing← prev⊞ allnext →☰ Read as one page
6.3Basic Query Testing
def test_graphql_user_query(api, base_url):
query = """
query GetUser($id: ID!) {
user(id: $id) {
name
email
posts {
title
publishedAt
}
}
}
"""
r = requests.post(f"{base_url}/graphql",
json={"query": query, "variables": {"id": "123"}},
headers=api.headers)
assert r.status_code == 200
data = r.json()
# GraphQL returns 200 even for errors — always check the errors array
assert "errors" not in data, f"GraphQL errors: {data.get('errors')}"
assert data["data"]["user"]["name"] == "Alice"
assert isinstance(data["data"]["user"]["posts"], list)
Mutation Testing
def test_graphql_create_user(api, base_url):
mutation = """
mutation CreateUser($input: CreateUserInput!) {
createUser(input: $input) {
id
name
email
}
}
"""
variables = {
"input": {
"name": "New User",
"email": "newuser@test.com"
}
}
r = requests.post(f"{base_url}/graphql",
json={"query": mutation, "variables": variables},
headers=api.headers)
data = r.json()
assert "errors" not in data
user = data["data"]["createUser"]
assert user["name"] == "New User"
assert user["id"] is not None