我正试图在C++中重现Python的一些功能。这是一种包含大量子函数的复杂数值方法。
有没有一种很好的方法可以将Python函数的值与我正在编写的C++函数进行比较,并且应该反映它们?
有人可以粘贴一些代码或提供一个小型教程吗?或者一些指针或引用?
非常感谢!Artabalt
测试。
在Python上编写功能测试(除非它们已经存在;通常会测试Python代码)。
将测试移植到C++。然后让你的C++函数通过测试。理想情况下,将测试作为makefile的目标,并尽可能运行它们。
编辑:
您可以随机测试,这是否是个好主意,可能取决于您的特定情况。经验法则是使用每个边界案例中的几个(您可以使用代码覆盖来查看是否有您遗漏的案例)。
例如,在我的工作中,我使用了一个需要大量组件的集成测试。我们在给定的时间点模拟下注过程(除用户界面外的所有过程),使用硬编码的服务器响应,并模拟重定向到bmp的硬件打印机。
现在,您无法测试所有内容。我无法测试每一个有效的数字组合(从0到36的6个数字?)。我也不能测试每个无效的组合(无穷大?)。你测试了一对情侣。有意义的。
所以我们总是给它相同的数字。测试是,它必须始终产生相同的bmp(必须呈现相同的字体,必须具有相同的文本,相同的投注日期,等等)
现在,根据您的代码和应用程序,生成此测试的自动化程度是可以达到的。
我不知道你的具体情况,但我会开始创建一个使用你的库的小程序(越简单越好)。一个在Python中实现,一个在C++中实现。例如,如果你在测试一个字符串库,你会做一个小程序,删除字符串中的一个字母,添加一个文本,擦除其他所有字母,等等
然后,您可以对几个测试用例进行自动化:
cat largetext.txt | ./my_python_program > output.pyhthon_program.txt
cat largetext.txt | ./my_cpp_program > output.cpp_program.txt
diff output.pyhthon_program.txt output.cpp_program.txt || echo "ERROR"
理想的情况是,每次编译时,都会运行测试(例如,如果代码很简单,可以这样做;如果不简单,可以在一天结束时进行测试)。
这并不意味着程序是相同的(你不能测试每一个可能的输入)。但会给你一些信心。如果您发现有不正确的地方,您首先将其添加到测试中,然后使其失败,然后修复它,直到它通过。
谨致问候。