У меня есть python программа mid.py:
def mid(a, b):
if a == 0:
print(b)
r = b
r = r + 1
return r
while b != 0:
if a > b:
a = a - b
else:
b = b - a
print(a)
r = a
return r
Я написал модульный тест для этого в unitTest1.py:
import sys
sys.path.append('..')
from Data.mid import mid
import unittest
class TestSum(unittest.TestCase):
currentResult = None # holds last result object passed to run method
def run(self, result=None):
self.currentResult = result # remember result for use in tearDown
unittest.TestCase.run(self, result) # call superclass run method
def test_sum_1(self):
self.assertEqual(mid(3, 2), 1, "Should be 2")
def test_sum_2(self):
self.assertEqual(mid(5, 5), 5, "Should be 5")
def test_sum_3(self):
self.assertEqual(mid(3, 3), 3, "Should be 3")
def test_sum_4(self):
self.assertEqual(mid(5, 3), 1, "Should be 4")
def test_sum_5(self):
self.assertEqual(mid(2, 4), 2, "Should be 2")
def test_sum(self):
self.assertEqual(mid(0, 2), 2, "Should be 2")
if __name__ == '__main__':
unittest.main(exit=False)
, после чего я использую exe c () для запуска unitTest1.py в другом файле (Fitness.py), получив контекст unitTest1.py по пути D: \ documents \ KL \ Data \ unitTest1.py и выполнив метод exe c ():
import sys
import ast
import astor
sys.path.append('..')
from FaultLocalization.Tracer import Tracer
from FaultLocalization.DataReader import DataReader
from AstTree.AstHelper import AstHelper
class Fitness:
def FitnessFunction(self):
dT = DataReader()
ctx = dT.getContextFileWithPath("D:\\docu\\KL\\Data\\unitTest1.py")
exec (ctx)
if __name__ == '__main__':
f = Fitness()
f.FitnessFunction()
Возвращает «Выполнено 0 тестов за 0,000 с». Это почему? Когда я помещаю метод exe c () в основную функцию, он работает нормально, но я действительно хочу использовать FitnessFunction, как описано выше. Любой другой способ справиться с этим?