我正在开发一个脚本来测试另一个程序。基本上,我复制了一个类,其中包含了我正在测试的程序的所有函数。为了简单起见,假设我只有两个函数:set(value)和add(value)。set(value)设置一个累加器值,add(value)向其添加值;我正在测试一个应该执行相同操作的程序。在
我还有一个check()函数,它验证set(value)和add(value)操作的累加器值是否与我正在测试的程序检索的值相同;因此,在每次操作之后,我都要运行check()函数并确保它们匹配。在
为了说明这一点,下面是一个(未经测试)的示例:
def set(self, value):
self.acc = value
sendCommandToMyProgram('set', value)
def add(self, value):
self.acc += value
sendCommandToMyProgram('add', value)
def check(self):
return self.acc == sendCommandToMyProgram('check', value)
我想做“测试场景”,比如:
^{pr2}$还有很多其他人
制作这个“测试场景”脚本的最佳方法是什么?如果它可以与接受不同参数的函数一起工作,那就更好了(在本例中,set()和add()都只收到一个参数值,但情况并非总是如此)。在
谢谢
每次手术后我都需要运行“check()”。在
我最终创建了“测试场景”,比如:
然后我迭代测试场景,基本上调用test[0](**test[1]),然后check()
但我想不出最好的解决办法
假设您不想在正常操作期间检查值all,首先想到的是内置的unit test module。在
如果您需要做一些更复杂的事情,而这些事情不能像下面所示的那样干净地隔离测试,请查看我不得不解决的一些my issues。值得注意的是,我最终推出了自己的测试运行程序,它的行为与单元测试非常相似,但控制能力更强。下个月左右我会把它推到py pi。在
工作单元测试示例
根据接受的答案更新
如果这只是一个测试脚本,并且你的模拟累加器没有在测试之外使用,那么考虑下面的mod。我仍然相信,从长远来看,编写单元测试将更好地为您服务
^{pr2}$这将允许您迭代任何想要的列表,而不必考虑调用check函数。提供了两种方法供您检查。在
如果不匹配,
assert
调用将抛出异常(仅在假设这将作为测试脚本存在的情况下建议)。删除
assert
并检查调用脚本的返回状态(而不是显式调用check()
)也可以清理问题。设置值。创建一个包含要添加的值的列表。然后,循环该列表,在每个循环中运行}。i、 e.:
check
和{numlist = [1, 2, -2, 3]; for num in numlist: obj.check(); obj.add(num)
相关问题 更多 >
编程相关推荐