Python — Последовательность не равна, но это то, чего я ожидаю

#python #unit-testing #console #sequences

#python #модульное тестирование #консоль #последовательности

Вопрос:

 def parse(self, input):
    input = input.replace("n", "").replace(" ", "")
    bits = input.split("=>")
    return bits[:-1]
 

Учитывая "a => nb => nc=> " вывод в консоли ["a", "b", "c"] , это именно то, что я хочу. Я предполагаю, что консоль должна форматировать выходные данные, но я не могу объяснить, почему мои тесты терпят неудачу.

Мой модульный тест завершается неудачей, указывая, что результат достигается [["a", "b", "c"]] при выполнении assertEqual с использованием unittest.

Кто-нибудь может объяснить? Я довольно новичок в Python в том смысле, что я не прикасался к нему несколько лет, и даже тогда это был довольно ограниченный опыт.

Тестовый код

 subject = InputParser()
self.assertEqual(subject.parse("a =>nb => "), ["a", "b"])
 

Приветствия

Комментарии:

1. Может быть, вы тоже можете показать код из своего unittest?

2. Пожалуйста, опубликуйте фактический код модульного теста?

3. Да, я добавил тестовый код, который я тоже использовал.

4. Круглые скобки вызова assert несбалансированы, т. Е. Есть Два закрывающих, но только один открытый.

Ответ №1:

Я только что протестировал это с помощью модуля ниже, и мой тест прошел просто отлично:

 import unittest

class InputParser:
    def parse(self, input):
        input = input.replace("n", "").replace(" ", "")
        bits = input.split("=>")
        return bits[:-1]

class InputParserTest ( unittest.TestCase ):
    def test_parse ( self ):
        subject = InputParser()
        self.assertEqual(subject.parse("a =>nb => "), ["a", "b"])

if __name__ == '__main__':
    unittest.main()
 

Комментарии:

1. Я чувствую себя полным идиотом. Код действительно работал. Неудачные тесты были названы аналогично некоторым другим тестам выше по цепочке. В свою очередь, результат синтаксического анализатора использовался в новой последовательности. Doh. Я принял это как ответ, поскольку вы были достаточно любезны, чтобы запустить код, который доказал, что было что-то еще, чего я не видел. Приветствия.

2. Ха-ха, иногда мы даже не видим самых очевидных ошибок 😉 Рад, что вы смогли решить эту проблему!