我用这本优秀的书(Test Driven Development in Python)在Python上发现了TDD,到目前为止,我很喜欢它。你知道吗
但是,我有一个关于创建单元测试的方法的问题。你知道吗
让我们想象一下这样的情况:
def A(MyObject):
# Do some complex modification on MyObject
return modified_MyObject
def B(modified_MyObject):
# Do some stuff on modified_MyObject
return something
如果我想测试一个对象,它将非常简单:我将在我的单元测试中手动创建一个对象,并对其进行测试,如下所示:
class TestObject(unittest.TestCase):
def testA(self):
testA = MyObject()
modified_MyObject = A(testA)
# assert MyObject has been modified
但是,如何测试B? 我可以看到的方式:
第一个方法允许testB不依赖于A(),但是我将创建一个“常量”对象,这显然是TDD中要避免的。此外,如果我在代码中更改了某些内容,我还必须修改我创建的对象。最后,如果对我的对象所做的修改意味着成百上千的步骤/数据,那么手工创建对象确实是一件痛苦的事情。你知道吗
第二种方法是在a()和testB之间建立依赖关系,但是由于我也在测试a(),所以应该可以。你知道吗
def testB(self):
testA = MyObject()
testModifiedObject = A(testA)
result = B(testModifiedObject)
# assert that B return a correct result.
一般的问题可能是:“在TDD中,如果代码函数正在使用其他函数,我可以在单元测试中也使用它们吗?”你知道吗
谢谢你的帮助
我觉得你的问题太笼统了,你能举个具体的例子吗?答案会因对象和关系的不同而不同。你知道吗
不过,一般来说,可以使用其他函数(只要这些函数有自己的测试)。通常,您可以通过
setUp
方法执行此操作:有时,尽管您可能需要一个模拟对象,或者只是将一些虚拟对象传递给B。你知道吗
顺便说一句,你知道由
object()
创建的对象是不可变的,你不能修改它吗?你知道吗相关问题 更多 >
编程相关推荐