提问人:Tyler Weaver 提问时间:8/15/2023 最后编辑:Tyler Weaver 更新时间:8/15/2023 访问量:22
由于输出中存在长文本,测试失败
Tests fail due to presence of long literal in output
问:
我的一些测试具有预期响应和实际响应。 实际是来自数据库的响应,它与手动构建的列表进行比较。
代码可以简化为以下内容:
# List of tuples expected
expected = [(1,2,3),(4,5,6),(7,8,9)]
# List of tuples actual. This is a response from the DB. I cannot control the
# presence of L in the result
actual = repr([(long(1), long(2), long(3)),(long(4),long(5),long(6)),(long(7),long(8),long(9))])
# print(actual): [(1L,2L,3L),(4L,5L,6L),(7L,8L,9L)]
print(actual)
assert expected == actual
在这种情况下,我希望期望等于实际,因为除了 L 字面之外,元组是相同的。然而,事实并非如此。
- (1, 2, 3),
+ (1L, 2L, 3L),
? + + +
我的问题是:如何在不为每个预期条目放置演员的情况下解决这个问题?long(<entry>)
我尝试使用 json 模块从数据库加载结果,但 json.loads 失败,因为它与有效的 JSON 不匹配。由于缺少逗号,它抱怨。
我尝试过使用 eval(actual),但它的结果是一样的。
我最后尝试使用 for 循环来遍历条目(徒劳地尝试使用 eval(loop_entry),但它导致拆分列表,就好像它是一个字符串一样。
我知道在我预期的作品中的每个条目中使用,但是当有很多行,每行都有很多条目时,这很麻烦。long(value)
答: 暂无答案
下一个:基于 dict 内部值的映射列表
评论
repr
tuple([int(x[:-1]) for x in actual[1:-1].split(", ")])