测试方法时的解包错误

2024-06-25 22:49:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这个方法:

def split_pointer_part(self, line):
    self.before_at, self.after_at = line.split('@', 1)
    return self.before_at, self.after_at

这是可行的,但当我对其运行此测试时:

def test_split_pointer_part(self):
        line = '13797906 23 n 04 flood 0 inundation 0 deluge 0 torrent 0 005 @ 13796604 n 0000 + 00603894 a 0401 + 00753137 v 0302 + 01527311 v 0203 + 02361703 v 0101 | an overwhelming number or amount; "a flood of requests"; "a torrent of abuse"'
        result = self.wn.split_pointer_part(line)
        answer = ('13797906 23 n 04 flood 0 inundation 0 deluge 0 torrent 0 005',' 13796604 n 0000 + 00603894 a 0401 + 00753137 v 0302 + 01527311 v 0203 + 02361703 v 0101 | an overwhelming number or amount; "a flood of requests"; "a torrent of abuse"')
        self.assertEqual(len(result), 2)
        for r, a in zip(result, answer):
            self.assertEqual(r, a)

这是我得到的错误:

self.before_at, self.after_at = line.split('@', 1)
ValueError: need more than 1 value to unpack

我知道我应该在某个地方使用argv,但我不知道在这个场景中如何使用它


Tags: ofselfdeflineresulttorrentatsplit
1条回答
网友
1楼 · 发布于 2024-06-25 22:49:39

因为第二次分手后什么都没有。。。尝试使用以下选项,这将保证after_at在不存在时将'',而不是引发异常:

before_at, after_at = line.partition('@')[::2]

相关问题 更多 >