我有三个不同版本的相同功能执行计算。给定相同的输入,所有三个将产生相同的输出。但是,不同之处在于这三个功能的实现方式不同,在不同的情况下可能表现得更好/更差。
类比就像有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
感觉这里有很多冗余。
答案 0 :(得分:1)
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)