我正在使用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 \ n \ n \ n \ n
它与我分配给text_var
的文本完全相同。
为什么会出现此问题以及如何解决?
谢谢!
答案 0 :(得分: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
"""
答案 1 :(得分:1)
(耸肩)某处您的文件文本与变量文本不同。
确保它们相同
with open("unittest_data/example_for_stack_overflow", "w") as outf:
outf.write(text_var)
然后再次运行你的代码,它应该可以工作。