Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 是否应该为包装第三方代码的方法编写测试用例?_Python_Unit Testing_Tdd - Fatal编程技术网

Python 是否应该为包装第三方代码的方法编写测试用例?

Python 是否应该为包装第三方代码的方法编写测试用例?,python,unit-testing,tdd,Python,Unit Testing,Tdd,在我的应用程序中,我有一个验证CIDR地址的方法。它所做的只是围绕ipv4验证cidr方法: 我个人不喜欢。我宁愿把验证检查放在main中 我这样做的唯一原因是因为我编写测试来验证CIDR地址: def test_input_for_valid_cidr_format(self): cidr = '192.168.2.4/24' self.assertTrue(self.scanner.isValidCIDR(cidr)) 是否需要编写这样的测试?进行测试的主要优点是允许您稍后

在我的应用程序中,我有一个验证CIDR地址的方法。它所做的只是围绕ipv4验证cidr方法:

我个人不喜欢。我宁愿把验证检查放在main中

我这样做的唯一原因是因为我编写测试来验证CIDR地址:

def test_input_for_valid_cidr_format(self):
    cidr = '192.168.2.4/24'
    self.assertTrue(self.scanner.isValidCIDR(cidr))

是否需要编写这样的测试?

进行测试的主要优点是允许您稍后切换实现,并确保它仍能按预期工作


就我个人而言,我不会测试库函数的薄包装,除非我在方法中执行一些逻辑,或者认真考虑关闭实现,或者在某些边缘情况下担心实现。我认为它没有为投入的努力提供足够的价值

进行测试的主要优点是允许您稍后切换实现,并确保它仍能按预期工作

就我个人而言,我不会测试库函数的薄包装,除非我在方法中执行一些逻辑,或者认真考虑关闭实现,或者在某些边缘情况下担心实现。我认为它没有为投入的努力提供足够的价值

另一个答案是:


进行测试的主要优点是允许您切换出 稍后再执行,并确保它仍能正常工作 预料之中

这正是我为包装代码编写测试用例的原因。在某个时候,我可能会想根据包装代码的更新版本测试我的代码。如果我自己针对它编写测试,我将知道包装后的代码是否仍然按照我的用例预期的那样执行

我还将编写测试以确保在调用包装好的代码时不会犯愚蠢的错误,因为我经常这样做。即,以错误的顺序获取参数:

def foo(x, y):
    # Wrapped function.
    ...

def call_foo(x, y):
    # My wrapper
    return foo(y, x)
另一个答案是:


进行测试的主要优点是允许您切换出 稍后再执行,并确保它仍能正常工作 预料之中

这正是我为包装代码编写测试用例的原因。在某个时候,我可能会想根据包装代码的更新版本测试我的代码。如果我自己针对它编写测试,我将知道包装后的代码是否仍然按照我的用例预期的那样执行

我还将编写测试以确保在调用包装好的代码时不会犯愚蠢的错误,因为我经常这样做。即,以错误的顺序获取参数:

def foo(x, y):
    # Wrapped function.
    ...

def call_foo(x, y):
    # My wrapper
    return foo(y, x)

另一个更好的问题可能是,为什么isValidCIDR是一个实例方法,因为self没有在主体中使用。首先,包装器不存在任何原因。@ ChepNe:这是一个类的一部分,我没有包含任何关于系统的其他代码或细节,因为这样做没有任何用处。你可以考虑把它变成一个@类方法。一个更好的问题的可能副本是为什么ISValcIDR是一个实例方法,因为自我不在身体里使用。包装器似乎一开始就没有存在的理由。@chepner它是类的一部分,我没有包含任何关于系统的其他代码或细节,因为这样做没有任何用处。你可以考虑把它变成一个“类方法”。我会说,你担心的很多事情都应该通过软件包本身的测试或正常的测试来处理。因此,我个人不认为这增加了价值。我同意这是一个偏好的问题。我也走了另一条路,原因正是你所说的。对我来说,我通常只是更喜欢写测试。对我来说,这不是一个高优先级的问题,但无论如何我都会这么做。+1这项技术在使用第三方库的包装器测试中进行了解释。我想说的是,您担心的很多问题应该通过包本身的测试或您的正常测试来处理,因此,我个人不认为这增加了价值。我同意这是一个偏好的问题。我也走了另一条路,原因正是你所说的。对我来说,我通常只是更喜欢写测试。对我来说,这不是一个高优先级,但我还是这样做了。+1直接使用第三方库在包装器测试中解释了这项技术