Python 's unittest, пройти тест по входу - PullRequest
1 голос
/ 04 февраля 2020

Я тестирую код, который строит карту, практически единственный способ проверить ее - это увидеть своими глазами результат, поэтому я хочу вставить вход (Y / n) в тестовую функцию, и если тогда Y будет считаться пройденным.

from unittest import TestCase
from .app import main
from .test_cases import test1


class Test(TestCase):
    def test_main(self):
        main(gdt1=test1[0],
             gdt2=test1[1],
             uav=test1[2])
        # This function plot the map, again, it doesn't matter what's the output for this question.
       worked = input('Enter y/n')
       if 'y' in worked: 
            # code to tell python the test passed.
        else:
            # code to tell python the test failed.

Ответы [ 2 ]

3 голосов
/ 04 февраля 2020

То, что вы ищете, это AssertIn(). См .: https://docs.python.org/3/library/unittest.html#unittest .TestCase.assertIn

Итак, ваш код будет выглядеть следующим образом:

class Test(TestCase):
    def test_main(self):
        main(gdt1=test1[0],
             gdt2=test1[1],
             uav=test1[2])
        # This function plot the map, again, it doesn't matter what's the output for this question.
       worked = input('Enter y/n')
       self.assertIn('y', worked)

Вы, вероятно, должны использовать assertEqual(), хотя, поскольку вы проверяете для равенства, так было бы self.assertEqual('y', worked.lower()). См .: https://docs.python.org/3/library/unittest.html#unittest .TestCase.assertEqual

0 голосов
/ 04 февраля 2020

Для юнит-тестов самое большое значение имеет общий код завершения теста. Если вы хотите, чтобы ваш тест проваливался только при вводе «n», просто провалите тест:

from unittest import TestCase
from .app import main
from .test_cases import test1


class Test(TestCase):
    def test_main(self):
        main(gdt1=test1[0],
             gdt2=test1[1],
             uav=test1[2])
        # This function plot the map, again, it doesn't matter what's the output for this question.
       worked = input('Enter y/n')
       if worked == 'n':
           raise Exception('Test has failed!')
...