Модульное тестирование текста в html выдает ошибку утверждения из-за дополнительных символов

#python #python-3.x #unit-testing

#питон #python-3.x #модульное тестирование

Вопрос:

У меня есть эта функция:

 def text_to_html(text):  """  Convert text into HTML  Args:  text (): text to convert   Returns:  HTML string  """  html = "lt;pgt;"   text.replace("n", "lt;brgt;")   "lt;/pgt;"  return html  

Я пытаюсь создать модульный тест для этой функции, как это.

 class TestDebtModules(unittest.TestCase):  def test_html(self):  string = """  THIS  IS A TEST  STRING  """  string_input = text_to_html(string)  string_output = r'lt;pgt;lt;brgt;THIS lt;brgt;IS A TEST lt;brgt;STRINGlt;brgt;lt;/pgt;'  self.assertEqual(string_input, string_output)  

Однако. это выдает ошибку утверждения, потому что добавляет дополнительные символы в мою строку. Это известная ошибка или я делаю что-то не так? (Надеюсь, последнее). Если это первое, есть ли для этого какой-либо обходной путь?

 Expected :lt;pgt;lt;brgt; THISlt;brgt; IS A TESTlt;brgt; STRINGlt;brgt; lt;/pgt; Actual :lt;pgt;lt;brgt;THIS lt;brgt;IS A TEST lt;brgt;STRINGlt;brgt;lt;/pgt;  

Ответ №1:

Ваша строка состоит из """ многострочной строки, которая включает пробелы и новые строки.

Чтобы удалить эти пробелы, рассмотрите возможность использования строки с неявными новыми строками, как показано ниже:

 string = "THISnIS A TESTnSTRINGn"  

или

 string = ("THISn"  "IS A TESTn"  "STRINGn")  

Если вы все еще хотите использовать его таким же образом, вы можете удалить пробелы, как показано ниже:

 string = """  THIS  IS A TEST  STRING  """ string = string.replace(" ", "")  

Однако это также приведет к удалению пробелов между словами

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

1. Спасибо. Но если я выполню это в обычном сценарии печати(repr(строка)), никаких странных символов не будет показано. Есть ли какой-нибудь способ их визуализировать?