具有不同实现但 return 相同值的两个函数的测试用例
Test cases for two functions with different implementations but return same value
我有两个具有不同实现的函数 return 相同的值,如何在不违反 DRY 原则的情况下为这两个函数 运行 同一组测试用例?
例如:我正在实现递归和命令式的方式来实现数字的阶乘。对于这两个函数,我想要一组相同的测试用例 运行 。如何在不违反 DRY 的情况下实施?
你的两个实现共享一个契约,你可以通过一组测试来表达它。例如,想象两个将输入加倍的函数:
def double_by_multiplying(value):
return 2 * value
def double_by_adding(value):
return value + value
使用 abstract test case using python unittest 中建议的方法之一,我们可以为任何将其输入加倍的函数编写一组通用测试,然后创建使用我们两个实现中的每一个的子类:
from unittest import TestCase
class DoublingContract:
def test_input_gets_doubled(self):
self.assertEqual(self.implementation(1), 2)
class DoubleMultiplicationTests(DoublingContract, TestCase):
def setUp(self):
self.implementation = double_by_multiplying
class DoubleAdditionTests(DoublingContract, TestCase):
def setUp(self):
self.implementation = double_by_adding
我有两个具有不同实现的函数 return 相同的值,如何在不违反 DRY 原则的情况下为这两个函数 运行 同一组测试用例? 例如:我正在实现递归和命令式的方式来实现数字的阶乘。对于这两个函数,我想要一组相同的测试用例 运行 。如何在不违反 DRY 的情况下实施?
你的两个实现共享一个契约,你可以通过一组测试来表达它。例如,想象两个将输入加倍的函数:
def double_by_multiplying(value):
return 2 * value
def double_by_adding(value):
return value + value
使用 abstract test case using python unittest 中建议的方法之一,我们可以为任何将其输入加倍的函数编写一组通用测试,然后创建使用我们两个实现中的每一个的子类:
from unittest import TestCase
class DoublingContract:
def test_input_gets_doubled(self):
self.assertEqual(self.implementation(1), 2)
class DoubleMultiplicationTests(DoublingContract, TestCase):
def setUp(self):
self.implementation = double_by_multiplying
class DoubleAdditionTests(DoublingContract, TestCase):
def setUp(self):
self.implementation = double_by_adding