Modern QA2026Basic Query Testing — tiles
Log inJoin
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