Not sure if this is intended behavior. I have a baseClass I'm writing tests for. My test architecture has an instance of this baseClass assigned as a member of TestBaseClass(unittest.TestCase) in TestBaseClass.setUp. The problem occurs when tests in TestBaseClass modify state within the member baseClass instance. I think there should be a fresh new instance of baseClass for every test that gets run, but the old state from the last test is still there. Example code and output from Python 2.6.2 attached.
Yes, this working as intended. Consider: Python 2.7a1+ (trunk:76725, Dec 9 2009, 09:26:36) [GCC 4.4.2] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> class baseClass(object): ... def __init__(self, testList=[]): ... self.testList = testList ... def insertItem(self): ... self.testList.append("testing from baseClass") ... >>> a = baseClass() >>> b = baseClass() >>> del b >>> a.insertItem() >>> print a.testList ['testing from baseClass'] >>> b = baseClass() >>> print b.testList ['testing from baseClass'] See http://docs.python.org/faq/design.html#why-are-default-values-shared-between-objects for an explanation of why.
Heh, that first b = baseClass(); del b wasn't supposed to be there and doesn't change the result, just in case you were wondering.
History
Date
User
Action
Args
2022-04-11 14:56:55
admin
set
github: 51714
2009-12-10 02:46:30
r.david.murray
set
messages: +
2009-12-10 02:42:22
r.david.murray
set
status: open -> closedpriority: normaltype: behaviornosy: + r.david.murraymessages: + resolution: not a bugstage: resolved
2009-12-10 02:21:34
awaltman
set
title: Call to another class's constructor in unittest.TestCase.setUp returns the same instance -> Call to another class's constructor in unittest.TestCase.setUp returns the same instance multiple times