title: Python- Assertion error when performing nosetests
body: <p>I am new to web.py . I was following  ex52 LPTHW , and I had to perform nosetests on all the tests in tests folder. But I am getting 1 failed test due to assertion error. I tried reading different assertion errors and why they occur , but I cant figure out this one. I tried expanding the errors which the server could possibly show up like 500 Internal , 400 but its still failing the test. I have created the other code just like mentioned in the book: <a href="http://learnpythonthehardway.org/book/ex52.html" rel="nofollow">http://learnpythonthehardway.org/book/ex52.html</a></p>
  
  <p>Here is my traceback:</p>
  
  <pre><code>C:\lpthw\gothonweb&gt;cd tests
  
  C:\lpthw\gothonweb\tests&gt;nosetests
  Traceback (most recent call last):
    File "C:\Python27\lib\site-packages\web\application.py", line 239, in process
      return self.handle()
    File "C:\Python27\lib\site-packages\web\application.py", line 230, in handle
      return self._delegate(fn, self.fvars, args)
    File "C:\Python27\lib\site-packages\web\application.py", line 420, in _delegate
      return handle_class(cls)
    File "C:\Python27\lib\site-packages\web\application.py", line 396, in handle_class
      return tocall(*args)
    File "C:\lpthw\gothonweb\bin\app.py", line 29, in GET
      return render.hello_form()
    File "C:\Python27\lib\site-packages\web\template.py", line 1017, in __getattr__
      t = self._template(name)
    File "C:\Python27\lib\site-packages\web\template.py", line 1014, in _template
      return self._load_template(name)
    File "C:\Python27\lib\site-packages\web\template.py", line 1001, in _load_template
      raise AttributeError, "No template named " + name
  AttributeError: No template named hello_form
  
  F...
  ======================================================================
  FAIL: tests.app_tests.test_index
  ----------------------------------------------------------------------
  Traceback (most recent call last):
    File "C:\Python27\lib\site-packages\nose\case.py", line 197, in runTest
      self.test(*self.arg)
    File "C:\lpthw\gothonweb\tests\app_tests.py", line 12, in test_index
      assert_response(resp)
    File "C:\lpthw\gothonweb\tests\tools.py", line 5, in assert_response
      assert status in resp.status, "Expected response %r not in %r" % (status , resp.status)
  AssertionError: Expected response '200' not in '500 Internal Server Error'
  
  ----------------------------------------------------------------------
  Ran 4 tests in 0.562s
  
  FAILED (failures=1) 
  </code></pre>
  
  <p>My tests code: app_tests.py</p>
  
  <pre><code>from nose.tools import *
  from bin.app import app
  from tests.tools import assert_response
  
  def test_index():
      #check that we get a 404 on the / URL
      resp = app.request("/")
      assert_response(resp, status= "404")
  
      #test our first GET request to /hello
      resp = app.request("/hello")
      assert_response(resp)
  
      #make sure default values work for the form 
      resp = app.request("/hello" , method="POST")
      assert_response(resp , contains="Nobody")
  
      #test that we get expected values
      data = {'name':'Tejas','greet':'Ola!'}
      resp = app.request("/hello " , method= "POST", data=data)
      assert_response(resp , contains="Zed")
  </code></pre>
  
  <p>tools.py : </p>
  
  <pre><code>from nose.tools import *
  import re
  
  def assert_response(resp, contains=None, matches=None, headers=None, status= "200"):
      assert status in resp.status, "Expected response %r not in %r" % (status , resp.status)
  
      if status == "200":
          assert resp.data , "Response data is empty."
  
      if contains:
          assert contains in resp.data, "Response does not contain %r" % contains 
  
      if matches:
          reg = re.compile(matches)
          assert reg.matches(resp.data), "Response does not match %r" % matches 
  
      if headers:
          assert_equal(resp.headers , headers)
  </code></pre>
  
  <p>app.py code: </p>
  
  <pre><code>import web 
  from gothonweb import map 
  
  urls = (
         '/game' , 'GameEngine' ,
         '/' , 'Index',
          )
  
  app = web.application(urls, globals())
  #little hack so that debug mode works with sessions
  if web.config.get('_session') is None:
      store= web.session.DiskStore('sessions')
      session= web.session.Session(app, store, initializer={'room':None})
      web.config._session = session 
  else:
      session= web.config._session
  
  render = web.template.render('templates/', base="layout")   
  
  class Index(object):
      def GET(self):
          #this is used to "setup" the session with starting values
          session.room= map.START
          web.seeother("/game")
  
  class GameEngine(object):
      def GET(self):
          if session.room:
              return render.show_room(room= session.room)
          else:
              #why is there here? do you need it?
               return render.you_died()
  
      def POST(self):
          form= web.input(action=None)
  
          if session.room and form.action:
              session.room= session.room.go(form.action)
          else:
              session.room= None        
  
  
  if __name__ == "__main__" :
      app.run()
  </code></pre>
  
  <p>After going ahead with the exercise now it gives me 2 import errors: </p>
  
  <pre><code>PS C:\lpthw\gothonweb\tests&gt; nosetests
  EE
  ======================================================================
  ERROR: Failure: SyntaxError (invalid syntax (app.py, line 2))
  ----------------------------------------------------------------------
  Traceback (most recent call last):
    File "C:\Python27\lib\site-packages\nose\loader.py", line 418, in loadTestsFromName
      addr.filename, addr.module)
    File "C:\Python27\lib\site-packages\nose\importer.py", line 47, in importFromPath
      return self.importFromDir(dir_path, fqname)
    File "C:\Python27\lib\site-packages\nose\importer.py", line 94, in importFromDir
      mod = load_module(part_fqname, fh, filename, desc)
    File "C:\lpthw\gothonweb\tests\app_tests.py", line 2, in &lt;module&gt;
      from bin.app import app
    File "C:\lpthw\gothonweb\bin\app.py", line 2
      from gothonweb import map.py
                               ^
  SyntaxError: invalid syntax
  
  ======================================================================
  ERROR: Failure: ImportError (cannot import name map)
  ----------------------------------------------------------------------
  Traceback (most recent call last):
    File "C:\Python27\lib\site-packages\nose\loader.py", line 418, in loadTestsFromName
      addr.filename, addr.module)
    File "C:\Python27\lib\site-packages\nose\importer.py", line 47, in importFromPath
      return self.importFromDir(dir_path, fqname)
    File "C:\Python27\lib\site-packages\nose\importer.py", line 94, in importFromDir
      mod = load_module(part_fqname, fh, filename, desc)
    File "C:\lpthw\gothonweb\tests\map_tests.py", line 2, in &lt;module&gt;
      from gothonweb import map
  ImportError: cannot import name map
  
  ----------------------------------------------------------------------
  Ran 2 tests in 0.002s
  
  FAILED (errors=2)
  </code></pre>
  
  <p>directory structure:</p>
  
  <pre><code>C:/lpthw/
      gothonweb/
      bin build dist doc sessions Gothonweb templates tests map.py app.py 
  tests/
  map_tests.py
  app_tests.py
  __init__.py
  tools.py
  </code></pre>
  
  <p>What should I do to fix the error? Thanks for the suggestions.</p>