我有点困惑。我正在使用python的unittest库测试django应用程序。突然之间,在几分钟内完成100%成功的测试后,突然出现错误。好吧,我想,我必须添加一些愚蠢的语法错误。我开始查看测试,然后是我的代码,然后我尝试打印出与assertEqual进行比较之前比较的结果。突然,如果我这样做,测试运行! :○
这是为什么?有谁之前经历过这个吗。我发誓,我做的唯一改变是在我的测试功能中添加一个print语句。我会在
之前和之后发布此功能之前(失败)
def test_swap_conditionals(self):
"""
Test conditional template keys
"""
testStr = "My email is: {?email}"
swapStr = self.t.swap(testStr)
# With email
self.assertEqual(swapStr, "My email is: john@baconfactory.com")
# Without email
self.t.template_values = {"phone" : "00458493"}
swapStr = self.t.swap(testStr)
self.assertEqual(swapStr, "My email is: ")
之后(成功)
def test_swap_conditionals(self):
"""
Test conditional template keys
"""
testStr = "My email is: {?email}"
swapStr = self.t.swap(testStr)
print(swapStr) #diff here
# With email
self.assertEqual(swapStr, "My email is: john@baconfactory.com")
# Without email
self.t.template_values = {"phone" : "00458493"}
swapStr = self.t.swap(testStr)
self.assertEqual(swapStr, "My email is: ")
答案 0 :(得分:1)
看起来有一些外在原因。
您可以查看的内容:
答案 1 :(得分:0)
好吧很尴尬,但这完全是我的错。交换函数正在查找该行上的每个条件模板变量,然后一次在该列表上迭代一个条件模板变量,因此要么错过了它已经拥有的键,要么它很幸运,它碰巧碰到了该键。
实施例
line: "This is my {?email}, and this is my {?phone}"
finds:
[{?email}, {?phone}]
iterates over [{?email}, {?phone}]
1. {?email}
key being compared = phone : '00549684'
它有手机作为钥匙,但它完全无视它并且不会将其换掉,因为 它只是持有{?email}所以它只返回“”。
我真的很抱歉把所有的时间浪费在这里。谢谢你的好答案。我现在正在重构代码,并且肯定会喝咖啡休息时间:D