Python unittest AssertionError: 0 != []
Python unittest AssertionError: 0 != []
我是 Python unittest 的新手,我正在尝试访问此列表:
def setUp(self):
self.customers = [
{"name": "Mary", "pets": [], "cash": 1000},
{"name": "Alan", "pets": [], "cash": 50},
{"name": "Richard", "pets": [], "cash": 100},
]
做这个测试:
def test_customer_pet_count(self):
count = get_customer_pet_count(self.customers[0])
self.assertEqual(0, count)
我创建了这个函数:
def get_customer_pet_count(customer_number):
if ["pets"] == 0 or ["pets"] == []:
return 0
return customer_number["pets"]
但我不断收到此错误:
AssertionError: 0 != []
有人可以帮忙解释一下我在函数中做错了什么吗?
self.customers[0] 为空列表 []。您应该使用 len(self.customers[0]) 或像这样修改函数:
def get_customer_pet_count(customer_number):
if customer_number == 0 or customer_number == []:
return 0
return customer_number
我们来看看这部分,get_customer_pet_count
函数:
def get_customer_pet_count(customer_number):
if ["pets"] == 0 or ["pets"] == []:
return 0
return customer_number["pets"]
首先,您传递的不是“客户编号”或索引,而是实际的客户字典。喜欢 {"name": "Mary", "pets": [], "cash": 1000}
.
其次,这个比较:["pets"] == 0
检查“如果一个列表有一个元素,字符串 'pets',等于数字 0”。这永远不可能是真的。列表永远不会 等于 一个数字。*
下一个比较["pets"] == []
是检查“如果列表只有一个元素,则字符串'pets' 等于一个空列表”。这也永远不会是真的。空列表不能等于 non-empty 列表。
如果写成def get_customer_pet_count(customer):
可能会更清楚。您正在向它传递带有客户 info 的字典,而不是客户 number。另外,你的函数说 pet_count
所以它应该是宠物列表的 长度 :
def get_customer_pet_count(customer):
return len(customer["pets"])
*忽略 user-defined 伪装该行为的类型。
我是 Python unittest 的新手,我正在尝试访问此列表:
def setUp(self):
self.customers = [
{"name": "Mary", "pets": [], "cash": 1000},
{"name": "Alan", "pets": [], "cash": 50},
{"name": "Richard", "pets": [], "cash": 100},
]
做这个测试:
def test_customer_pet_count(self):
count = get_customer_pet_count(self.customers[0])
self.assertEqual(0, count)
我创建了这个函数:
def get_customer_pet_count(customer_number):
if ["pets"] == 0 or ["pets"] == []:
return 0
return customer_number["pets"]
但我不断收到此错误:
AssertionError: 0 != []
有人可以帮忙解释一下我在函数中做错了什么吗?
self.customers[0] 为空列表 []。您应该使用 len(self.customers[0]) 或像这样修改函数:
def get_customer_pet_count(customer_number):
if customer_number == 0 or customer_number == []:
return 0
return customer_number
我们来看看这部分,get_customer_pet_count
函数:
def get_customer_pet_count(customer_number):
if ["pets"] == 0 or ["pets"] == []:
return 0
return customer_number["pets"]
首先,您传递的不是“客户编号”或索引,而是实际的客户字典。喜欢 {"name": "Mary", "pets": [], "cash": 1000}
.
其次,这个比较:["pets"] == 0
检查“如果一个列表有一个元素,字符串 'pets',等于数字 0”。这永远不可能是真的。列表永远不会 等于 一个数字。*
下一个比较["pets"] == []
是检查“如果列表只有一个元素,则字符串'pets' 等于一个空列表”。这也永远不会是真的。空列表不能等于 non-empty 列表。
如果写成def get_customer_pet_count(customer):
可能会更清楚。您正在向它传递带有客户 info 的字典,而不是客户 number。另外,你的函数说 pet_count
所以它应该是宠物列表的 长度 :
def get_customer_pet_count(customer):
return len(customer["pets"])
*忽略 user-defined 伪装该行为的类型。