Как сделать Python unittest для цикла while?
Когда я пишу модульный тестовый сценарий, я не знаю, как создать тестовый сценарий цикла. Может ли кто-нибудь дать мне руководство по написанию тестового примера для нижеприведенного фрагмента кода цикла? большое спасибо.
def judge(arg):
flag = 1 if arg > 15 else 0
return flag
def while_example(a,b):
output = "NOK"
while True:
ret1 = judge(a)
ret2 = judge(b)
if ret1 == 0 and ret2 == 0:
print "both a and b are OK"
output = "OK"
break
else:
print "both a and b are not OK"
a =- 1
b =- 1
return output
1 ответ
Решение
Я преодолел эту проблему модульного теста, ниже мой ответ
import unittest
import sys
from StringIO import *
from while_loop import *
from mock import *
class TestJudge(unittest.TestCase):
def testJudge_1(self):
self.assertEqual(judge(16), 1)
def testJudge_2(self):
self.assertEqual(judge(15), 0)
class TestWhile(unittest.TestCase):
def test_while_1(self):
judge = Mock(side_effect=[0,0])
out = StringIO()
sys.stdout = out
a = while_example(1, 1)
output = out.getvalue().strip()
self.assertEqual(output, "both a and b are OK")
def test_while_2(self):
judge = Mock(side_effect=[1,0])
out = StringIO()
sys.stdout = out
a = while_example(18, 12)
output = out.getvalue().strip()
self.assertEqual(output, 'both a and b are not OK\nboth a and b are OK')
if __name__ == "__main__":
unittest.main()