I am doing exercise 47 of Learn Python the hard way, and I am getting an error saying:
Traceback (most recent call last):
File "c:\python26\lib\site-packages\nose-1.2.0-py2.6.egg\nose
97, in runTest
self.test(*self.arg)
File "E:\project\ex47\tests\ex47_tests.py", line 27, in test_
assert_equal(start.go('down').go('up'),start)
AssertionError: None != <ex47.game.Room object at 0x0191BFD0>
#while executing the below code:
from nose.tools import *
from ex47.game import Room
def test_room():
gold=Room("GoldRoom",
"""This room has gold in it you can grab. There's a
door to the north.""")
assert_equal(gold.name,"GoldRoom")
assert_equal(gold.paths,{})
def test_room_paths():
center = Room("Center","Test room in the center.")
north = Room("North","Test room in the north.")
south = Room("South", "Test room in the south.")
center.add_paths({'north':north,'south': south})
assert_equal(center.go('north'),north)
assert_equal(center.go('south'),south)
def test_map():
start = Room("start", "You can go west and down a hole.")
west = Room("Trees","There are trees here, you can go east.")
down = Room("Dungeon","It's dark down here, you can go up.")
start.add_paths({'west':west,'down':down})
west.add_paths({'east':start})
assert_equal(start.go('west'),west)
assert_equal(start.go('west').go('east'),start)
assert_equal(start.go('down').go('up'),start)
I searched on Google and found out that it is raised while we are debugging but could it also be caused how my game.py file is located inside the bin folder
the overall structure is like this
Projects/ex47/bins/
/docs
/tests/ex47_tests.py, _ _ init_ _ .py
/ex47/game.py
Can anyone please help me out and tell me why I am getting this error?
this is the game.py file.
class Room(object):
def __init__(self,name,description):
self.name = name
self.description = description
self.paths={}
def go(self,direction):
return self.paths.get(direction,None)
def add_paths(self,paths):
self.paths.update(paths)
You’ve never added an
uppath to yourdownroom.So your failure is on this line
start.go('down')returns thedown Roomobject, which has no path forup. It returnsNonefrom yourget()call, and compares again thestartobject. The assertion is raised becauseNone != startLooks like you need this line: