Согласитесь со своим другом - используйте Python и поместите их в рамки модульного тестирования.
Я несколько лет работал с учеными, которые проделали большую часть своей алгоритмической работы на Python.
В приведенном ниже примере показаны типичные тесты (оператор импорта предназначен для тестируемого материала) с несколькими тонкостями, которые могут сэкономить вам время.
Бизнес с сохранением и восстановлением sys.path заключается в том, что вы можете разместить все свои тесты в каталоге рядом с каталогом src, не устанавливая исходный код в свои основные модули Python.
Этот тестовый скрипт написан так, что его можно импортировать в большой набор юнит-тестов или просто запустить с помощью python thisfile.py.
#!/usr/bin/python
"""
VRML Writer tests
"""
import unittest
import os
import sys
if __name__ == '__main__':
global save_syspath
save_syspath = sys.path
sys.path = [os.path.abspath("../src/")] + sys.path
from cgtools.VizValueTools import *
if __name__ == '__main__':
sys.path = save_syspath # RESTORE SYS.PATH
# use some common constants to make tests easier
MINV = 0.002
MAXV = 12.789
class TestColdHotColorGeneration(unittest.TestCase):
def testGeneratesLimitValues(self):
assert generateColdHotColorValue(MINV, MAXV, MINV) == (0.0, 0.0, 1.0)
assert generateColdHotColorValue(MINV, MAXV, MAXV) == (1.0, 0.0, 0.0)
assert generateColdHotColorValue(0, 0, 0) == (1.0, 0.0, 0.0) # cope with weird case where range is effectively one value, should be always top
def testGeneratesLimitValuesWithClipping(self):
assert generateColdHotColorValue(MINV, MAXV, MINV - 1.2) == (0.0, 0.0, 1.0)
assert generateColdHotColorValue(MINV, MAXV, MAXV + 49) == (1.0, 0.0, 0.0)
def testGeneratesMiddleValue(self):
"""
Note to be careful picking values so your value IS in the middle,
to generate pure green
"""
assert generateColdHotColorValue(1.0, 3.0, 2.0) == (0.0, 1.0, 0.0)
if __name__ == '__main__':
# When this module is executed from the command-line, run all its tests
unittest.main()