title: Unittest for context-manager fails with AttributeError: __exit__
body: <p>I'm trying to understand the correct way to unit test code with context-manager (with statement). </p>
  
  <p>Here is my sample code:</p>
  
  <pre><code>class resources():
      def __init__(self):
          self.data = 'at-init'
  
      def __enter__(self):
          self.data = 'at-enter'
          return self
  
      def __exit__(self, exc_type, exc_val, exc_tb):
          self.data = 'at-exit'
  </code></pre>
  
  <p>Here is my unittest code:</p>
  
  <pre><code>import unittest
  import ctxmgr     
  
  class TestResources(unittest.TestCase):
      def setUp(self):
          pass
  
      def test_ctxmgr(self):
          with ctxmgr.resources as r:
              self.assertEqual(r.data, 'at-enter')
  </code></pre>
  
  <p>The sample code runs fine but the unittest code above fails with,</p>
  
  <pre><code>======================================================================
  ERROR: test_ctxmgr (__main__.TestResources)
  ----------------------------------------------------------------------
  Traceback (most recent call last):
    File "test_ctxmgr.py", line 12, in test_ctxmgr
      with ctxmgr.resources as r:
  AttributeError: __exit__
  
  ----------------------------------------------------------------------
  Ran 1 test in 0.003s
  
  FAILED (errors=1)
  </code></pre>
  
  <p>What is causing this error? What am I missing?</p>