2016-02-10 3 views
0

Я использую Python 2.7Различные текст при чтении из файла питона

текст, который я получаю от чтения файла отличается от текста Поручаю непосредственно к переменной.

import unittest 
class test_things(unittest.TestCase): 
    def test_bad_read_stack_overflow(self): 
     text_var = """[] Lorem Ipsum Lorem Ipsum Lorem Ipsum 
Lorem Ipsum 
Lorem Ipsum Lorem Ipsum Lorem Ipsum 
*** Lorem Ipsum 

Lorem Ipsum Lorem Ipsum Lorem Ipsum 
Lorem Ipsum Lorem Ipsum 
Lorem Ipsum Lorem Ipsum ** [] 

Lorem Ipsum 
* Lorem IpsumLorem Ipsum 
Lorem IpsumLorem IpsumLorem Ipsum 
[] Lorem Ipsum 
Lorem Ipsum 
Lorem IpsumLorem Ipsum 



     """ 

     import io 
     text_file = io.open("unittest_data/example_for_stack_overflow", "r", encoding="utf-8").read() 

     self.assertEqual(text_var, text_file) 

Утверждение не выполнено.

В файле "example_for_stack_overflow" у меня есть это:


[] Lorem Ipsum Lorem Ipsum Lorem Ipsum 
Lorem Ipsum 
Lorem Ipsum Lorem Ipsum Lorem Ipsum 
*** Lorem Ipsum 

Lorem Ipsum Lorem Ipsum Lorem Ipsum 
Lorem Ipsum Lorem Ipsum 
Lorem Ipsum Lorem Ipsum ** [] 

Lorem Ipsum 
* Lorem IpsumLorem Ipsum 
Lorem IpsumLorem IpsumLorem Ipsum 
[] Lorem Ipsum 
Lorem Ipsum 
Lorem IpsumLorem Ipsum 

Для ясности, потому что здесь он не появляется, есть 4 \ п символов в конце.

... IpsumLorem Ipsum \ п \ п \ п \ п

Это тот же самый текст, который я назначил на text_var.

Почему эта проблема возникает и как ее исправить?

Спасибо!

ответ

1

(shrug) где-то текст вашего файла не совпадает с переменным текстом.

Убедитесь, что они идентичны по

with open("unittest_data/example_for_stack_overflow", "w") as outf: 
    outf.write(text_var) 

затем запустить свой код еще раз и он должен работать.

+0

Ну, этот вид поражает цель, так как я получаю «text_file». Мои другие модульные тесты работают с копированным содержимым из файла, но не при чтении из файла. – RandomGuyqwert

2

Вы подробно изучили сообщение об ошибке?

AssertionError: '[] L[279 chars]rem Ipsum\nLorem Ipsum\nLorem IpsumLorem Ipsum\n\n\n\n  ' != '[] L[279 chars]rem Ipsum\nLorem Ipsum\nLorem IpsumLorem Ipsum\n\n\n\n' 

Есть несколько пробелов в конце строки ('[...]\n\n '), которые не включены в файл ('[...]\n\n').

Если вы закроете строку, то в нее войдут """. Это должно сработать:

def test_bad_read_stack_overflow(self): 
     text_var = """[] Lorem Ipsum Lorem Ipsum Lorem Ipsum 
Lorem Ipsum 
Lorem Ipsum Lorem Ipsum Lorem Ipsum 
*** Lorem Ipsum 

Lorem Ipsum Lorem Ipsum Lorem Ipsum 
Lorem Ipsum Lorem Ipsum 
Lorem Ipsum Lorem Ipsum ** [] 

Lorem Ipsum 
* Lorem IpsumLorem Ipsum 
Lorem IpsumLorem IpsumLorem Ipsum 
[] Lorem Ipsum 
Lorem Ipsum 
Lorem IpsumLorem Ipsum 



"""