модульный тест в Python для функции, которая не имеет возвращаемого значения - PullRequest
0 голосов
/ 11 октября 2019

У меня есть функция, которая должна выбирать только 10 лучших запросов из списка запросов:

def prioritize_top_10_requests(list_of_requests):
if not list_of_requests:
    system.exit(1)
else:
    for i in list_of_requests[0:10]:
        print i

Я хочу написать модульный тест для этой функции, просто чтобы проверить, печатается ли «i» только 10 разхотя у нас есть больше списка запросов.

Я пишу тестовые примеры Python впервые.

1 Ответ

0 голосов
/ 11 октября 2019

У меня не настроен python3. Приведенный ниже код работает с Python 3.

.

  • Создан UnitTest TestCase с одним тестом "test_priority".
  • В тесте перенаправьте стандартный вывод в строку.
  • Затем выполните функцию.
  • Соберите результаты печати из строки.
  • Удалите None и пустые строки и найдите длину.
  • Проверьте, равна ли она 10.
import unittest
from io import StringIO
import sys

def prioritize_top_10_requests(list_of_requests):
    for i in list_of_requests[0:10]:
        print(i)

class TestMyCode(unittest.TestCase):
    def test_priority(self):
        sys.stdout = result = StringIO()
        prioritize_top_10_requests(range(100))
        sys.stdout = sys.__stdout__
        printed_lines = result.getvalue()
        print_count = len(printed_lines.strip().split('\n'))
        self.assertEqual(print_count, 10)

if __name__ == '__main__':
    unittest.main()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...