Python Unittest
Python Unittest求助
写了一个类,做单元测试的时候碰到了一个很诡异的问题。
这一段代码跑出来没问题。可是在后面加了一个方法和测试之后,第一个的结果却不对了~
有人知道是为什么么?
------解决方案--------------------
貌似参数subs = {}用字典不对吧,默认参数只初始一次,变成是实例间共享的,没特别需求最好是改成不可变类型,类似:
class Account():
def __init__(self, name, value = 0, subs = None):
self.name = name
self.subs = {} if subs == None else subs
self.value = value
写了一个类,做单元测试的时候碰到了一个很诡异的问题。
from unittest import TestCase
class Account():
def __init__(self, name, value = 0, subs = {}):
self.name = name
self.subs = subs
self.value = value
class AccountTest(TestCase):
def test_empty(self):
base = Account('test', 100)
self.assertEqual(base.name, 'test')
self.assertEqual(base.value, 100)
self.assertEqual(base.subs, {})
这一段代码跑出来没问题。可是在后面加了一个方法和测试之后,第一个的结果却不对了~
from unittest import TestCase
class Account():
def __init__(self, name, value = 0, subs = {}):
self.name = name
self.subs = subs
self.value = value
def add_account(self, son):
self.subs[son.name] = son
class AccountTest(TestCase):
def test_empty(self):
base = Account('test', 100)
self.assertEqual(base.name, 'test')
self.assertEqual(base.value, 100)
self.assertEqual(base.subs, {})
def test_add_account(self):
base = Account('test', 100)
father = Account('father')
father.add_account(base)
self.assertEqual(father.subs, {base.name: base})
有人知道是为什么么?
------解决方案--------------------
貌似参数subs = {}用字典不对吧,默认参数只初始一次,变成是实例间共享的,没特别需求最好是改成不可变类型,类似:
class Account():
def __init__(self, name, value = 0, subs = None):
self.name = name
self.subs = {} if subs == None else subs
self.value = value