2017-02-10 8 views
1

私は計算を実行する同じ機能の3つの異なるバージョンを持っています。同じ入力が与えられた場合、3つすべて同じ出力を生成します。しかし、違いは、3つの機能が異なって実装され、異なる状況でより良い/悪い動作をする可能性があるということです。鼻検査3つのバージョンの同じ機能

類推には、3つの異なるソーティング機能を持つようなものがあります。自分自身を繰り返さないように鼻検査を使って単体テストを書くにはどうすればいいですか?

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 

私のテストでは、次のようになります。

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 

冗長性の多くがここにありますように感じます。

答えて

1

チェックアウト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

しかし、これにはnose_parameterizedパッケージを追加する必要があります。これを鼻で直接行う方法はありますか? – slaw

+0

さて、何ですか?パッケージを追加すると何が問題になりますか? – wim

+1

依存関係を減らそうとする – slaw

関連する問題