Python中表的PyTest
我是Python新手,我正在尝试为print_table函数编写一个测试函数。测试失败了,我不知道为什么。有人能帮我吗? 以下是错误: 断言错误:断言'\x1b(0lqqqq…qqqq j\x1b(B'='┌──────────┬...──────────┘\不 script.pyPython中表的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',
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()
查看这些表示)