Here is a clean traceback of a failed bgpvpn create test (after commenting out the retry decorators): This is with networking_bgpvpn.tests.unit.extensions.test_bgpvpn.BgpvpnExtensionTestCase.test_bgpvpn_create_with_valid_route_targets . Traceback (most recent call last): File "/home/teom7365/prog/openstack/networking-bgpvpn/.tmp/tmp.FxNzLbmRqx/openstack/neutron/neutron/api/v2/resource.py", line 79, in resource result = method(request=request, **args) File "/home/teom7365/prog/openstack/networking-bgpvpn/.tmp/tmp.FxNzLbmRqx/openstack/neutron/neutron/api/v2/base.py", line 438, in create return self._create(request, body, **kwargs) File "/home/teom7365/prog/openstack/networking-bgpvpn/.tmp/tmp.FxNzLbmRqx/openstack/neutron/neutron/api/v2/base.py", line 482, in _create self._plugin) File "/home/teom7365/prog/openstack/networking-bgpvpn/.tmp/tmp.FxNzLbmRqx/openstack/neutron/neutron/quota/__init__.py", line 232, in make_reservation context, File "/home/teom7365/prog/openstack/networking-bgpvpn/.tmp/tmp.FxNzLbmRqx/openstack/neutron/neutron/db/quota/driver.py", line 176, in make_reservation context, resources, tenant_id) File "/home/teom7365/prog/openstack/networking-bgpvpn/.tmp/tmp.FxNzLbmRqx/openstack/neutron/neutron/db/quota/driver.py", line 68, in get_tenant_quotas quota_objs = quota_obj.Quota.get_objects(context, project_id=tenant_id) File "/home/teom7365/prog/openstack/networking-bgpvpn/.tmp/tmp.FxNzLbmRqx/openstack/neutron/neutron/objects/base.py", line 449, in get_objects **cls.modify_fields_to_db(kwargs) File "/home/teom7365/prog/openstack/networking-bgpvpn/.tmp/tmp.FxNzLbmRqx/openstack/neutron/neutron/objects/db/api.py", line 49, in get_objects return plugin._get_collection( File "/home/teom7365/prog/openstack/networking-bgpvpn/.tox/py27/local/lib/python2.7/site-packages/mock/mock.py", line 698, in __getattr__ raise AttributeError("Mock object has no attribute %r" % name) AttributeError: Mock object has no attribute '_get_collection' The issue arises because the core plugin is actually a NonCallableMagicMock : > /home/teom7365/prog/openstack/networking-bgpvpn/.tmp/tmp.FxNzLbmRqx/openstack/neutron/neutron/objects/db/api.py(46)get_objects() -> filters = _kwargs_to_filters(**kwargs) (Pdb) l 41 for k, v in kwargs.items()} 42 43 44 def get_objects(context, model, _pager=None, **kwargs): 45 with context.session.begin(subtransactions=True): 46 -> filters = _kwargs_to_filters(**kwargs) 47 # TODO(ihrachys): decompose _get_collection from plugin instance 48 plugin = directory.get_plugin() 49 return plugin._get_collection( 50 context, model, 51 dict_func=None, # return all the data (Pdb) directory.get_plugin() I suspect that we aren't using the unit test framework in a way that creates a real core plugin, but I haven't investigated further yet. A surprising thing is that this test, run with "python -m testtools.run networking_bgpvpn.tests.unit.extensions.test_bgpvpn.BgpvpnExtensionTestCase.test_bgpvpn_create_with_valid_route_targets" in py27 venv does ***not*** fail. It's only when I run it with "echo networking_bgpvpn.tests.unit.extensions.test_bgpvpn.BgpvpnExtensionTestCase.test_bgpvpn_create_with_valid_route_targets | python -m subunit.run discover -v -t ./ ./networking_bgpvpn/tests/unit --load-list /dev/stdin" that it fails... I'm curious why...