Python中表的PyTest

Python中表的PyTest,python,pytest,Python,Pytest,我是Python新手,我正在尝试为print_table函数编写一个测试函数。测试失败了,我不知道为什么。有人能帮我吗? 以下是错误: 断言错误:断言'\x1b(0lqqqq…qqqq j\x1b(B'='┌──────────┬...──────────┘\不 script.py from terminaltables import SingleTable TABLE_DATA = ( ('Platform', 'Years', 'Notes'), ('Mk5', '2007-2009',

我是Python新手,我正在尝试为print_table函数编写一个测试函数。测试失败了,我不知道为什么。有人能帮我吗? 以下是错误:

断言错误:断言'\x1b(0lqqqq…qqqq j\x1b(B'='┌──────────┬...──────────┘\不

script.py

from terminaltables import SingleTable

TABLE_DATA = (
('Platform', 'Years', 'Notes'),
('Mk5', '2007-2009', 'The Golf Mk5 Variant was\nintroduced in 2007.'),
('MKVI', '2009-2013', 'Might actually be Mk5.'),
)

def print_table(TABLE_DATA):
  table_instance = SingleTable(TABLE_DATA)
  table_instance.justify_columns[2] = 'right'
  return table_instance.table
test_printer.py

from script import print_table

def test_table():
  data = [
     ('Platform', 'Years', 'Notes'),
     ('Mk5', '2007-2009', 'The Golf Mk5 Variant was\nintroduced in 2007.'),
     ('MKVI', '2009-2013', 'Might actually be Mk5.'),
    ]


    assert  print_table(data)== "\n".join([
    "┌──────────┬───────────┬──────────────────────────┐",
    "│ Platform │ Years     │                    Notes │",
    "├──────────┼───────────┼──────────────────────────┤",
    "│ Mk5      │ 2007-2009 │ The Golf Mk5 Variant was │",
    "│          │           │      introduced in 2007. │",
    "│ MKVI     │ 2009-2013 │   Might actually be Mk5. │",
    "└──────────┴───────────┴──────────────────────────┘"
   ])

Python不会自动识别字符串之间是否有“Enter”字符。您需要指定“\n”字符串。此外,当您将一行代码拆分为多行时,正如您在此处所做的那样,您需要在行尾指定一行连续字符“”

尝试使用此修订后的函数定义:

def test_table():
data = [ \
 ('Platform', 'Years', 'Notes'), \
 ('Mk5', '2007-2009', 'The Golf Mk5 Variant was\nintroduced in 2007.'), \
 ('MKVI', '2009-2013', 'Might actually be Mk5.'), \
]


assert  print_table(data)== "\n".join([        
"┌──────────┬───────────┬──────────────────────────┐\n", \
"│ Platform │ Years     │                    Notes │\n", \
"├──────────┼───────────┼──────────────────────────┤\n", \
"│ Mk5      │ 2007-2009 │ The Golf Mk5 Variant was │\n", \
"│          │           │      introduced in 2007. │\n", \
"│ MKVI     │ 2009-2013 │   Might actually be Mk5. │\n", \
"└──────────┴───────────┴──────────────────────────┘\n"  \

遗憾的是,所比较的字符实际上并不相同。为了简单起见,考虑第一个字符:

从脚本导入打印表
def测试表():
数据=[
(‘平台’、‘年份’、‘注释’),
('Mk5','2007-2009','Golf Mk5变体于2007年生产。'),
(“MKVI”、“2009-2013”、“可能实际上是Mk5”),
]
测试=打印表格(数据)
应为=“\n”。请加入([
"┌──────────┬───────────┬──────────────────────────┐",
"│ 站台│ 年│                    笔记│",
"├──────────┼───────────┼──────────────────────────┤",
"│ Mk5│ 2007-2009 │ 高尔夫Mk5的变种是│",
"│          │           │      2007年推出。│",
"│ MKVI│ 2009-2013 │   实际上可能是Mk5。│",
"└──────────┴───────────┴──────────────────────────┘"
])
断言测试[0]==应为[0]
这将为您提供:

>断言测试[0]==预期的[0]
E断言错误:断言'\x1b'='┌'
E-┌
E+
测试打印机。py:23:AssertionError

什么样的失败?似乎
数据
首先不可访问HI,它仍然会给出相同的错误:AssertionError:assert'\x1b(0lqqqq…qqqqq j\x1b(B'=='┌──────────┬...──────────┘\谢谢安妮,我现在明白了。但是为什么字符不一样呢?当我打印打印表格(数据)的输出时它打印的表与我比较的表完全相同。至少在我的计算机上,
test
似乎是用编码表示的,而
expected
使用的是
utf-8
。它们在终端中的表示形式恰好相同(终端知道如何对两者进行解码)。(您可以使用
test.encode()
expected.encode()
查看这些表示)