@jeka777jjj
Начинающий Python разработчик

Unit tests на Python. Не могу покрыть тестами функцию. Не поможете?

Здравствуйте. Есть задание - покрыть тестами минимум 80% кода (coverage)
def anagram(word: str) -> str:
    resoult_list = []
    for char in word:
        if char.isalpha():
            resoult_list.append(char)
    resoult_list.reverse()
    for index, char in enumerate(word):
        if not char.isalpha():
            resoult_list.insert(index, char)
    return ''.join(resoult_list)


def reverse_string(s: str) -> str:
    tasks_list = s.split(' ')
    answer = []
    for task in tasks_list:
        answer.append(anagram(task))
    return ' '.join(answer)


Проблема состоит вот в чем... Когда я написал тесты (код будет ниже), то функция reverse_string у меня получилась не покрыта. Когда я написал тесты только под эту функцию, она все-равно не покрыта, а anagram покрыта, хотя я ее не вызывал в тестах (я понимаю, что reverse_string ее использует). Перебрав кучу вариантов, я остановился на том, что мне как-то нужно проверить методы split и join. Вопрос... Как это сделать? Заранее спасибо, ниже код тестов

from unittest import TestCase, main
import anagrams


class AnagramTests(TestCase):

    def test_anagram_word(self):
        self.assertEqual(anagrams.anagram('abcde'), 'edcba')

    def test_anagram_number(self):
        self.assertEqual(anagrams.anagram('12345'), '12345')

    def test_with_symbol(self):
        self.assertEqual(anagrams.anagram('t!ext'), 't!xet')

    def test_multiple_symbol(self):
        self.assertEqual(anagrams.anagram('as@q!#we'), 'ew@q!#sa')

    def test_multiple_space(self):
        self.assertEqual(anagrams.anagram('     '), '     ')

    def test_reverse_string_empty_string(self):
        self.assertEqual(anagrams.reverse_string(''), '')


    def test_multiple_words(self):
        self.assertEqual(anagrams.reverse_string('abcd efgh xyz'), 'dcba hgfe zyx')

    def test_many_words_whith_symbol(self):
        self.assertEqual(anagrams.reverse_string('a1bcd efg!h'), 'd1cba hgf!e')
  • Вопрос задан
  • 200 просмотров
Пригласить эксперта
Ответы на вопрос 1
lenk0belk0
@lenk0belk0
программироваю
split и join тестировать не надо, нужно тестировать написанный вами код, его логику, граничные случаи

посмотрите в документации, какие строки могут быть пропущены, https://coverage.readthedocs.io/en/7.3.2/cmd.html#...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы