Résolue

Test de la fonction contains_five

# Tests unitaires # Python

Bonjour,
Excusez moi j'ai un petit souci je suis entrain de tester la fonction pytest je ne sais pas si vous avez eu à l'utiliser. Bon il m'est demandé de définir une fonction pytest appelée test_contains_five qui teste si la fonction contains_five vérifie correctement si contains_five_(my_list) contient 5.
Supposant que la fonction contains_five a déjà été écrite. Ce test vérifie que la fonction contains_five fonctionne comme prévu lorsqu'on lui donne une liste contenant le nombre 5.
Utilisation de l'instruction assert pour vérifier si le résultat de contains_five(my_list) est True.

Output attendu: Le test doit être réussi sans aucune erreur.

Mon code:
python def test_contains_five(): @pytest.fixture # Tests the 'contains_five' function. # Example list for testing my_list = [1, 3, 5, 7, 9] assert contains_five(my_list) == True
Merci

Salut,

Alors là j'ai fait simple, j'ai tout dans main.py. Mais c'est bien d'avoir :

  • Un fichier conftest

  • Un fichier test

import pytest

@pytest.fixture
def my_list():
    return [1, 3, 5, 7, 9]


def test_contains_five(my_list):
    assert 5 in my_list

Donc là j'ai bien une fixture, que je passe en paramètre de mon test, et l'assert qui vérifie que 5 est dedans.

Ensuite en console je lance pytest main.py

Merci Gabriel,

En fait j'étais parallèlement entrain de chercher l'erreur et je me suis rendu compte qu' à la base je n'avais pas importé le module pytest.
Sinon ton approche aussi est bonne car ça me permettra d'avoir deux fichiers bien distincts et qui rend le travail moins touffu.
Je te remercie pour ta disponibilité et aussi pour tes propositions.

Gabriel Trouvé

Mentor

Pas de soucis :)

Dans mes app Django j'utilise pytest et je sépare les choses

Bonjour Gabriel,
Je reviens une fois de plus ce matin avec un nouveau souci, je suis entrain de tester une fonction qui doit itérer entre une liste de nombre afin de la catégoriser:
normalement je devrais avoir comme output:
Low:2, médium:2 et high:2
mais à la place ça me renvoie plutôt autre chose. Je vais poser mon code et s'il te plaît corrige le

def categorize_ratings(rating_list):
     for rating in rating_list:
           number_of_low_ratings = [1,2,3,4]
           number_of_medium_ratings = [5,6,7]
           number_of_high_ratings = [8,9,10]
           rating = -1
           print(rating_list)
           if rating <= 4:
                print(f"Low: {number_of_low_ratings }")
            elif rating <=7:
                 print(f"Medium:{number_of_medium_ratings }
            else:
                  print(f"High:{number_of_high_ratings}

Lorsque je teste ma fonction, avec les elements suivants:
#calling categorize_ratings([1, 2, 3, 4, 5, 6, 7, 8, 9])
categorize_ratings([1, 2, 3, 4, 5, 6, 7, 8, 9])
print("Expected output:\nLow:2 \nMedium:2 \nHigh:2")
au lieu d'avoir le même résultat j'ai plutôt un retour de mes listes mais
3fois pour Low, 2 fois pour médium et 1fois pour high.
merci d'avance.

Re,

je t'ai répondu sur ton autre conversation

Inscris-toi

(c'est gratuit !)

Inscris-toi

Tu dois créer un compte pour participer aux discussions.

Créer un compte

Rechercher sur le site

Formulaire de contact

Inscris-toi à Docstring

Pour commencer ton apprentissage.

Tu as déjà un compte ? Connecte-toi.