title: Can't create test client during unit test of Flask app
body: <p>I am trying to find out how to run a test on a function which grabs a variable value from <code>session['user_id']</code>.  This is the specific test method:</p>
  
  <pre><code>def test_myProfile_page(self):
      with app.test_client() as c:
          with c.session_transaction() as sess:
              sess['user_id'] = '1'
  
      rv = c.get('/myProfile')
      assert 'My Profile' in rv.data
  </code></pre>
  
  <p>This is the view being tested:</p>
  
  <pre><code>@app.route('/myProfile')
  def myProfile():
      if not session.get('logged_in'):
          return render_template('login.html')
      else:
          profileID = session['user_id']
          userList = users.query.filter_by(id=profileID).all()
          flash('My Profile')
          return render_template('myProfile.html', userList=userList)
  </code></pre>
  
  <p>This is the entire test file:</p>
  
  <pre><code>import os
  import app
  import unittest
  import tempfile
  
  class AppTestCase(unittest.TestCase):
      def setUp(self):
          self.db_fd, app.app.config['DATABASE'] = tempfile.mkstemp()
          app.app.config['TESTING'] = True
          self.app = app.app.test_client()
  
      def tearDown(self):
          os.close(self.db_fd)
          os.unlink(app.app.config['DATABASE'])
  
      def test_profile_page(self):
          rv = self.app.get('/profile1')
          assert 'Profile' in rv.data
  
      def login(self, username, password):
          return self.app.post('/login', data=dict(
              username=username,
              password=password
          ), follow_redirects=True)
  
      def logout(self):
          return self.app.get('/logout', follow_redirects=True)
  
      def test_login_logout(self):
          rv = self.login('Alex', 'passwordAlex')
          assert 'Welcome' in rv.data
          rv = self.logout()
          assert 'You have been logged out' in rv.data
          rv = self.login('Alex', 'noPassword')
          assert 'You have to Login' in rv.data
          rv = self.login('WrongName', 'passwordAlex')
          assert 'You have to Login' in rv.data
  
      def test_myProfile_page(self):
          with app.test_client() as c:
              with c.session_transaction() as sess:
                  sess['user_id'] = '1'
  
          rv = c.get('/myProfile')
          assert 'My Profile' in rv.data
  
  if __name__ == '__main__':
      unittest.main()
  </code></pre>
  
  <p>The following error is shown when running the test:</p>
  
  <pre><code>ERROR: test_myProfile_page (__main__.AppTestCase)
  ----------------------------------------------------------------------
  Traceback (most recent call last):
    File "app_tests.py", line 46, in test_myProfile_page
      with app.test_client() as c:
  AttributeError: 'module' object has no attribute 'test_client'
  
  ----------------------------------------------------------------------
  Ran 3 tests in 0.165s
  
  
  FAILED (errors=1)
  </code></pre>
  
  <p>Why am I getting this error and how do I fix it?</p>