2017-02-10 6 views
1

Ich habe drei verschiedene Versionen der gleichen Funktion, die eine Berechnung durchführt. Bei gleicher Eingabe erzeugen alle drei die gleiche Ausgabe. Der Unterschied besteht jedoch darin, dass die drei Funktionen unterschiedlich implementiert sind und in verschiedenen Situationen besser/schlechter abschneiden.Nasentest Drei Versionen der gleichen Funktion

Eine Analogie wäre wie 3 verschiedene Sortierfunktionen zu haben. Wie schreibe ich Komponententests mit dem Nasentest, um mich nicht zu wiederholen?

def sort_a(array): 
    """ 
    sort using and return 
    """ 
    return sorted_array 

def sort_b(array): 
    """ 
    sort using and return 
    """ 
    return sorted_array 

def sort_c(array): 
    """ 
    sort using and return 
    """ 
    return sorted_array 

Mein Test könnte wie folgt aussehen:

class TestCore: 
    def test_sort_a_positive_vals(self): 
     # run test 

    def test_sort_a_negative_vals(self): 
     # run test 

    def test_sort_b_positive_vals(self): 
     # run test 

    def test_sort_b_negative_vals(self): 
     # run test 

    def test_sort_c_positive_vals(self): 
     # run test 

    def test_sort_c_negative_vals(self): 
     # run test 

Es fühlt sich an wie es hier viel Redundanz ist.

Antwort

1

Auschecken nose-parameterized.

from nose_parameterized import parameterized 

def square_exp(x): 
    return x**2 

def square_mul(x): 
    return x*x 

class SquareTest(TestCase):  

    @parameterized.expand([(square_exp,), (square_mul,)]) 
    def test_square(self, square_impl): 
     self.assertEqual(square_impl(3), 9) 
+1

Aber das würde erfordern, das nose_parameterized-Paket hinzuzufügen. Gibt es eine Möglichkeit, dies direkt in der Nase zu tun? – slaw

+0

Nun, na und? Was ist falsch beim Hinzufügen eines Pakets? – wim

+1

Versuchen, Abhängigkeiten zu reduzieren – slaw

Verwandte Themen