Python 鼻子测试同一功能的三个版本

Python 鼻子测试同一功能的三个版本,python,unit-testing,nose,Python,Unit Testing,Nose,我有三个不同版本的同一个函数来执行计算。给定相同的输入,所有三个将产生相同的输出。然而,不同之处在于这三个功能的实现方式不同,在不同的情况下可能表现更好/更差 一个类比就像有3个不同的排序函数。如何使用nose测试编写单元测试,以避免重复 def sort_a(array): """ sort using and return """ return sorted_array def sort_b(array): """ sort using an

我有三个不同版本的同一个函数来执行计算。给定相同的输入,所有三个将产生相同的输出。然而,不同之处在于这三个功能的实现方式不同,在不同的情况下可能表现更好/更差

一个类比就像有3个不同的排序函数。如何使用nose测试编写单元测试,以避免重复

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
感觉这里有很多冗余。

请查看


但这需要添加nose_参数化包。有没有办法直接在鼻子里做这个?那又怎样?添加包有什么错?试图减少依赖关系测试/开发依赖关系其实并不重要,无论如何,你应该将它们与运行时依赖关系分开。你是说如果不使用nose_参数化,就不可能实现这一点吗?
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)