Programmation assistée par l'IA pour développeurs et développeuses
Francesca Donadoni
AI Curriculum Manager, DataCamp
Écrivez une fonction Python qui analyse des adresses de courriel.
Écrivez une fonction Python qui analyse des adresses de courriel. Elle doit réussir les tests suivants :
- Accepte une adresse valide comme "[email protected]".
- Refuse une entrée invalide comme "user@@domain".
- Lève une ValueError pour une entrée vide.
Invite utilisateur : Générez des tests unitaires en Python pour une fonction qui traite des données de formulaire soumises par l'utilisateur et les insère dans une base de données SQL.
Réponse du modèle :
Voici une suite pytest prête à exécuter qui couvre la validation, la normalisation, la protection contre l'injection SQL et le comportement des transactions pour une fonction qui traite des données de formulaire et insère un enregistrement dans une base de données SQL.
[...]
# ---------- Test DB fixtures ----------
@pytest.fixture()
def conn():
"""In-memory SQLite DB with a users table."""
c = sqlite3.connect(":memory:") [...]
Invite utilisateur : Générez des tests unitaires Python avec pytest pour la fonction suivante. Incluez des cas pour l'entrée vide, des mots-clés SQL dans l'entrée et des caractères spéciaux. Supposez une connexion de base de données simulée. <INSERT FUNCTION>
Réponse du modèle :
Voici un module de tests pytest autonome qui utilise des objets simulés (aucune BD réelle) et couvre l'entrée vide, les mots-clés SQL et les caractères spéciaux. Il vérifie aussi les appels commit/close et l'absorption des exceptions.
[...]
@pytest.fixture
def mock_sqlite_connect(monkeypatch):
"""
Patch sqlite3.connect to return a MagicMock connection + cursor.
[...]
$$
Analysez la fonction Python suivante pour repérer d'éventuelles vulnérabilités et proposez des solutions plus sûres s'il y a lieu.
$$
Examinez ce code pour les problèmes de sécurité Web courants, dont l'injection SQL, les XSS et les lacunes de validation des entrées.

def login(username, password):
query = f"SELECT * FROM users WHERE username = '{username}' \
AND password = '{password}'"
result = db.execute(query)
return result.fetchone()
Voici un audit ciblé OWASP Top 10 de votre fonction de connexion, ainsi qu'une réécriture plus sûre.
username = "admin' --" → contourne la vérification du mot de passe. [...]Programmation assistée par l'IA pour développeurs et développeuses