dimanche 8 avril 2018

App Engine python local unit test urlfetch_stub.py fancy_urllib module has no attribute 'InvalidCertificateException'

I'm using linux with google-cloud-sdk-app-engine-python package installed version 196.0.0-0.

I try to create local unit test, following reference from [1].

class ViewsTestCase(unittest.TestCase):

    def setUp(self):
        self.client = application.test_client()
        self.client.testing = True
        self.testbed = testbed.Testbed()
        self.testbed.activate()
        self.testbed.init_urlfetch_stub()

    def tearDown(self):
        self.testbed.deactivate()

add PYTHONPATH environment variable:

export PYTHONPATH="$PYTHONPATH:/usr/lib/google-cloud-sdk/platform/google_appengine:/usr/lib/google-cloud-sdk/platform/google_appengine/lib:/usr/lib/google-cloud-sdk/platform/google_appengine/lib/yaml/lib"

then I try to run it.

$ python test_views.py 
Traceback (most recent call last):
  File "test_views.py", line 6, in <module>
    from google.appengine.ext import testbed
  File "/usr/lib/google-cloud-sdk/platform/google_appengine/google/appengine/ext/testbed/__init__.py", line 130, in <module>
from google.appengine.api import urlfetch_stub
  File "/usr/lib/google-cloud-sdk/platform/google_appengine/google/appengine/api/urlfetch_stub.py", line 32, in <module>
_fancy_urllib_InvalidCertException = fancy_urllib.InvalidCertificateException
AttributeError: 'module' object has no attribute 'InvalidCertificateException'

I have read this similar thread [2].

But I checked, the path of fancy_lib has been fixed.

$ find /usr/lib/google-cloud-sdk/platform/google_appengine/lib/fancy_urllib/
/usr/lib/google-cloud-sdk/platform/google_appengine/lib/fancy_urllib/
/usr/lib/google-cloud-sdk/platform/google_appengine/lib/fancy_urllib/__init__.pyc
/usr/lib/google-cloud-sdk/platform/google_appengine/lib/fancy_urllib/fancy_urllib
/usr/lib/google-cloud-sdk/platform/google_appengine/lib/fancy_urllib/fancy_urllib/__init__.pyc
/usr/lib/google-cloud-sdk/platform/google_appengine/lib/fancy_urllib/fancy_urllib/__init__.py
/usr/lib/google-cloud-sdk/platform/google_appengine/lib/fancy_urllib/__init__.py

I have tried to add fancy_urllib to PYTHONPATH

export PYTHONPATH="$PYTHONPATH:/usr/lib/google-cloud-sdk/platform/google_appengine:/usr/lib/google-cloud-sdk/platform/google_appengine/lib:/usr/lib/google-cloud-sdk/platform/google_appengine/lib/yaml/lib:/usr/lib/google-cloud-sdk/platform/google_appengine/lib/fancy_urllib"

But still failed.

any clue?

thank you.

[1]https://cloud.google.com/appengine/docs/standard/python/tools/localunittesting

[2]GAE SDK 1.9.5 and an InvalidCertificateException

1 commentaire:

  1. import sys

    sys.path.insert(1, '/google-cloud-sdk/platform/google_appengine')
    sys.path.insert(1, '/google-cloud-sdk/lib/third_party')

    RépondreSupprimer