SQL pour testeurs : prouvez que l'API a vraiment écrit dans la BD
Une API peut joyeusement renvoyer 201 Created et pourtant ne pas avoir sauvegardé votre ligne correctement. Pour en être sûr, vous allez vérifier vous-même la source de vérité — la base de données.
L'idée, en une ligne
Après l'appel API, interrogez directement la base de données et confirmez que l'enregistrement a vraiment atterri. Cette vérification s'appelle une assertion de base de données, et elle ne demande que quelques gestes SQL.
Les gestes SQL à connaître
- JOIN — coud les lignes de deux tables sur une clé correspondante, comme les commandes au client qui les a passées
- GROUP BY — regroupe les lignes en compartiments pour que COUNT, SUM et AVG puissent résumer chaque compartiment, comme les commandes par client
- WHERE — filtre les lignes avant le regroupement ; HAVING — filtre les groupes après
- sous-requête — un SELECT imbriqué dans un autre, répondant à une question par étapes (comme « les utilisateurs qui ont passé plus de commandes que la moyenne »)
Voyez-le à l'œuvre
Voici une requête de reporting qui utilise plusieurs de ces gestes ensemble, plus le petit motif que vous glisserez dans un test.
-- Orders per paying customer, busiest first
SELECT c.name, COUNT(o.id) AS order_count
FROM customers AS c
JOIN orders AS o ON o.customer_id = c.id
WHERE o.status = 'paid'
GROUP BY c.name
HAVING COUNT(o.id) > 1
ORDER BY order_count DESC;
-- In a pytest test, confirm the API's write really landed:
-- cur.execute("SELECT title FROM posts WHERE id = ?", (new_id,))
-- row = cur.fetchone()
-- assert row is not None and row[0] == "qa"Lisez la requête de haut en bas : joignez les clients à leurs commandes, gardez seulement les payées, comptez-les par client, gardez les clients avec plus d'une, et triez par le compte. L'extrait de test en dessous cherche juste l'id que vous avez créé et vérifie que la ligne existe.
Avancé — le motif de test et rester en sécurité
Pour le test, la forme est petite : POST à travers l'API, puis exécutez un SELECT paramétré pour l'id que vous venez de créer et vérifiez qu'exactement une ligne est revenue avec les valeurs attendues.
Basé sur le standard SQL tel que documenté dans la doc PostgreSQL (SELECT, JOIN, GROUP BY)
Toutes les leçons de Automatisation d'API, de zéro à confiant
- Le modèle mental HTTP & votre première collection Postman
- Recréez-le en code : requests + pytest avec état partagé
- Faites confiance à la forme : validation de schéma & test négatif
- Passer la porte : clés d'API, Bearer/JWT & OAuth2
- SQL pour testeurs : prouvez que l'API a vraiment écrit dans la BD
- Mocking & contrats : des tests rapides, hors-ligne, fiables