2016-10-08 5 views
0

J'ai un unittests pour un programme. Être nouveau pour tester le développement piloté, comment puis-je générer un programme à partir des tests donnésComment puis-je écrire un programme sur unittest fourni

Par exemple, j'ai ce test:

class MaxMinTest(TestCase): 
"""docstring for MaxMinTest""" 

def test_find_max_min_four(self): 
    self.assertListEqual([1, 4], 
         find_max_min([1, 2, 3, 4]), 
         msg='should return [1,4] for [1, 2, 3, 4]') 

def test_find_max_min_one(self): 
    self.assertListEqual([4, 6], 
         find_max_min([6, 4]), 
         msg='should return [4, 6] for [6, 4]') 

def test_find_max_min_two(self): 
    self.assertListEqual([2, 78], 
         find_max_min([4, 66, 6, 44, 7, 78, 8, 68, 2]), 
         msg='should return [2, 78] for [4, 66, 6, 44, 7, 78, 8, 68, 2]') 

def test_find_max_min_three(self): 
    self.assertListEqual([1, 4], 
         find_max_min([1, 2, 3, 4]), 
         msg='should return [1,4] for [1, 2, 3, 4]') 

def test_find_max_min_identity(self): 
    self.assertListEqual([4], 
         find_max_min([4, 4, 4, 4]), 
         msg='Return the number of elements in the list in a new list if the `min` and `max` are equal') 

Merci à l'avance. S'il vous plaît partagez également des ressources pour apprendre le développement piloté par les tests pour un débutant comme moi.

+0

Vous ne pouvez pas générer un code basé sur un unittest, vous devez trouver c'est toi. Tout ce qui satisfait aux tests est valide. Pensez-y comme une liste d'exigences. BTW, vous cherchez quelque chose comme 'def find_max_min (seq): retour [min (seq), max (seq)] si len (set (seq)! = 1 sinon [seq [0]]' – MisterMiyagi

+0

Merci. Etes-vous au courant de toutes les ressources sur l'écriture d'unittests? – kevinsamoei

Répondre

1

sans vous donner la réponse au code qui ferait passer ces tests, votre approche peut être quelque chose comme ceci:

  • Qu'est-ce que vous testez?

  • Que prend cette fonction et que retourne-t-elle?

  • Comment faire un test? Une fois que je fais un test, comment puis-je faire passer l'autre test, tout en m'assurant que le test précédent est toujours réussi. Et ainsi de suite, jusqu'à ce que tous les tests passent avec le code que vous avez écrit dans votre fonction.

Donc, pour répondre à vos questions à un haut niveau.

Vous testez quelque chose qui s'appelle MinMax, ce qui laisse entrevoir le minimum et le maximum de quelque chose. Ce quelque chose est une fonction appelée find_max_min prend en entrée un list, et renvoie une liste avec deux valeurs. Ces deux valeurs sont dans l'ordre, le min et le max du list vous passez à votre fonction.

Documentation à regarder:

+0

Merci @idjaw.Très utile.Je suppose que c'est une fonction qui retourne une nouvelle liste avec le nombre maximum et minimum – kevinsamoei