diff --git a/tests/compute_engine/test_credentials.py b/tests/compute_engine/test_credentials.py
index 87f7472..568aec7 100644
--- a/tests/compute_engine/test_credentials.py
+++ b/tests/compute_engine/test_credentials.py
@@ -68,7 +68,7 @@
         # expired)
         assert self.credentials.valid
 
-    @mock.patch('google.auth.compute_engine._metadata.get')
+    @mock.patch('google.auth.compute_engine._metadata.get', autospec=True)
     def test_refresh_error(self, get_mock):
         get_mock.side_effect = exceptions.TransportError('http error')
 
@@ -77,7 +77,7 @@
 
         assert excinfo.match(r'http error')
 
-    @mock.patch('google.auth.compute_engine._metadata.get')
+    @mock.patch('google.auth.compute_engine._metadata.get', autospec=True)
     def test_before_request_refreshes(self, get_mock):
         get_mock.side_effect = [{
             # First request is for sevice account info.
diff --git a/tests/oauth2/test_credentials.py b/tests/oauth2/test_credentials.py
index 5c76cb2..b53b188 100644
--- a/tests/oauth2/test_credentials.py
+++ b/tests/oauth2/test_credentials.py
@@ -46,7 +46,7 @@
         with pytest.raises(NotImplementedError):
             self.credentials.with_scopes(['email'])
 
-    @mock.patch('google.oauth2._client.refresh_grant')
+    @mock.patch('google.oauth2._client.refresh_grant', autospec=True)
     @mock.patch(
         'google.auth._helpers.utcnow', return_value=datetime.datetime.min)
     def test_refresh_success(self, now_mock, refresh_grant_mock):
diff --git a/tests/oauth2/test_service_account.py b/tests/oauth2/test_service_account.py
index f07f79d..678e6a3 100644
--- a/tests/oauth2/test_service_account.py
+++ b/tests/oauth2/test_service_account.py
@@ -159,7 +159,7 @@
         payload = jwt.decode(token, PUBLIC_CERT_BYTES)
         assert payload['sub'] == subject
 
-    @mock.patch('google.oauth2._client.jwt_grant')
+    @mock.patch('google.oauth2._client.jwt_grant', autospec=True)
     def test_refresh_success(self, jwt_grant_mock):
         token = 'token'
         jwt_grant_mock.return_value = (
@@ -185,7 +185,7 @@
         # expired)
         assert self.credentials.valid
 
-    @mock.patch('google.oauth2._client.jwt_grant')
+    @mock.patch('google.oauth2._client.jwt_grant', autospec=True)
     def test_before_request_refreshes(self, jwt_grant_mock):
         token = 'token'
         jwt_grant_mock.return_value = (
diff --git a/tests/test__cloud_sdk.py b/tests/test__cloud_sdk.py
index 86f69a1..ba72072 100644
--- a/tests/test__cloud_sdk.py
+++ b/tests/test__cloud_sdk.py
@@ -38,7 +38,8 @@
 with open(os.path.join(DATA_DIR, 'cloud_sdk.cfg')) as fh:
     CLOUD_SDK_CONFIG_DATA = fh.read()
 
-CONFIG_PATH_PATCH = mock.patch('google.auth._cloud_sdk.get_config_path')
+CONFIG_PATH_PATCH = mock.patch(
+    'google.auth._cloud_sdk.get_config_path', autospec=True)
 
 
 @pytest.fixture
diff --git a/tests/test__default.py b/tests/test__default.py
index bfb0c39..a317e0a 100644
--- a/tests/test__default.py
+++ b/tests/test__default.py
@@ -43,7 +43,7 @@
 
 LOAD_FILE_PATCH = mock.patch(
     'google.auth._default._load_credentials_from_file', return_value=(
-        mock.sentinel.credentials, mock.sentinel.project_id))
+        mock.sentinel.credentials, mock.sentinel.project_id), autospec=True)
 
 
 def test__load_credentials_from_file_invalid_json(tmpdir):
@@ -131,7 +131,9 @@
 
 
 @LOAD_FILE_PATCH
-@mock.patch('google.auth._cloud_sdk.get_application_default_credentials_path')
+@mock.patch(
+    'google.auth._cloud_sdk.get_application_default_credentials_path',
+    autospec=True)
 def test__get_gcloud_sdk_credentials(
         mock_get_adc_path, mock_load):
     mock_get_adc_path.return_value = SERVICE_ACCOUNT_FILE
@@ -143,7 +145,9 @@
     mock_load.assert_called_with(SERVICE_ACCOUNT_FILE)
 
 
-@mock.patch('google.auth._cloud_sdk.get_application_default_credentials_path')
+@mock.patch(
+    'google.auth._cloud_sdk.get_application_default_credentials_path',
+    autospec=True)
 def test__get_gcloud_sdk_credentials_non_existent(mock_get_adc_path, tmpdir):
     non_existent = tmpdir.join('non-existent')
     mock_get_adc_path.return_value = str(non_existent)
@@ -156,7 +160,7 @@
 
 @mock.patch(
     'google.auth._cloud_sdk.get_project_id',
-    return_value=mock.sentinel.project_id)
+    return_value=mock.sentinel.project_id, autospec=True)
 @mock.patch('os.path.isfile', return_value=True)
 @LOAD_FILE_PATCH
 def test__get_gcloud_sdk_credentials_project_id(
@@ -174,7 +178,7 @@
 
 @mock.patch(
     'google.auth._cloud_sdk.get_project_id',
-    return_value=None)
+    return_value=None, autospec=True)
 @mock.patch('os.path.isfile', return_value=True)
 @LOAD_FILE_PATCH
 def test__get_gcloud_sdk_credentials_no_project_id(
@@ -212,10 +216,11 @@
 
 
 @mock.patch(
-    'google.auth.compute_engine._metadata.ping', return_value=True)
+    'google.auth.compute_engine._metadata.ping', return_value=True,
+    autospec=True)
 @mock.patch(
     'google.auth.compute_engine._metadata.get_project_id',
-    return_value='example-project')
+    return_value='example-project', autospec=True)
 def test__get_gce_credentials(get_mock, ping_mock):
     credentials, project_id = _default._get_gce_credentials()
 
@@ -223,7 +228,9 @@
     assert project_id == 'example-project'
 
 
-@mock.patch('google.auth.compute_engine._metadata.ping', return_value=False)
+@mock.patch(
+    'google.auth.compute_engine._metadata.ping', return_value=False,
+    autospec=True)
 def test__get_gce_credentials_no_ping(ping_mock):
     credentials, project_id = _default._get_gce_credentials()
 
@@ -232,10 +239,11 @@
 
 
 @mock.patch(
-    'google.auth.compute_engine._metadata.ping', return_value=True)
+    'google.auth.compute_engine._metadata.ping', return_value=True,
+    autospec=True)
 @mock.patch(
     'google.auth.compute_engine._metadata.get_project_id',
-    side_effect=exceptions.TransportError())
+    side_effect=exceptions.TransportError(), autospec=True)
 def test__get_gce_credentials_no_project_id(get_mock, ping_mock):
     credentials, project_id = _default._get_gce_credentials()
 
@@ -243,7 +251,9 @@
     assert project_id is None
 
 
-@mock.patch('google.auth.compute_engine._metadata.ping', return_value=False)
+@mock.patch(
+    'google.auth.compute_engine._metadata.ping', return_value=False,
+    autospec=True)
 def test__get_gce_credentials_explicit_request(ping_mock):
     _default._get_gce_credentials(mock.sentinel.request)
     ping_mock.assert_called_with(request=mock.sentinel.request)
@@ -251,7 +261,8 @@
 
 @mock.patch(
     'google.auth._default._get_explicit_environ_credentials',
-    return_value=(mock.sentinel.credentials, mock.sentinel.project_id))
+    return_value=(mock.sentinel.credentials, mock.sentinel.project_id),
+    autospec=True)
 def test_default_early_out(get_mock):
     assert _default.default() == (
         mock.sentinel.credentials, mock.sentinel.project_id)
@@ -259,7 +270,8 @@
 
 @mock.patch(
     'google.auth._default._get_explicit_environ_credentials',
-    return_value=(mock.sentinel.credentials, mock.sentinel.project_id))
+    return_value=(mock.sentinel.credentials, mock.sentinel.project_id),
+    autospec=True)
 def test_default_explict_project_id(get_mock, monkeypatch):
     monkeypatch.setenv(environment_vars.PROJECT, 'explicit-env')
     assert _default.default() == (
@@ -268,7 +280,8 @@
 
 @mock.patch(
     'google.auth._default._get_explicit_environ_credentials',
-    return_value=(mock.sentinel.credentials, mock.sentinel.project_id))
+    return_value=(mock.sentinel.credentials, mock.sentinel.project_id),
+    autospec=True)
 def test_default_explict_legacy_project_id(get_mock, monkeypatch):
     monkeypatch.setenv(environment_vars.LEGACY_PROJECT, 'explicit-env')
     assert _default.default() == (
@@ -277,16 +290,16 @@
 
 @mock.patch(
     'google.auth._default._get_explicit_environ_credentials',
-    return_value=(None, None))
+    return_value=(None, None), autospec=True)
 @mock.patch(
     'google.auth._default._get_gcloud_sdk_credentials',
-    return_value=(None, None))
+    return_value=(None, None), autospec=True)
 @mock.patch(
     'google.auth._default._get_gae_credentials',
-    return_value=(None, None))
+    return_value=(None, None), autospec=True)
 @mock.patch(
     'google.auth._default._get_gce_credentials',
-    return_value=(None, None))
+    return_value=(None, None), autospec=True)
 def test_default_fail(unused_gce, unused_gae, unused_sdk, unused_explicit):
     with pytest.raises(exceptions.DefaultCredentialsError):
         assert _default.default()
@@ -294,9 +307,10 @@
 
 @mock.patch(
     'google.auth._default._get_explicit_environ_credentials',
-    return_value=(mock.sentinel.credentials, mock.sentinel.project_id))
+    return_value=(mock.sentinel.credentials, mock.sentinel.project_id),
+    autospec=True)
 @mock.patch(
-    'google.auth.credentials.with_scopes_if_required')
+    'google.auth.credentials.with_scopes_if_required', autospec=True)
 def test_default_scoped(with_scopes_mock, get_mock):
     scopes = ['one', 'two']
 
diff --git a/tests/test_crypt.py b/tests/test_crypt.py
index 9069216..33105e4 100644
--- a/tests/test_crypt.py
+++ b/tests/test_crypt.py
@@ -131,8 +131,11 @@
     def test_from_string_pub_cert_failure(self):
         cert_bytes = PUBLIC_CERT_BYTES
         true_der = rsa.pem.load_pem(cert_bytes, 'CERTIFICATE')
-        with mock.patch('rsa.pem.load_pem',
-                        return_value=true_der + b'extra') as load_pem:
+        load_pem_patch = mock.patch(
+            'rsa.pem.load_pem', return_value=true_der + b'extra',
+            autospec=True)
+
+        with load_pem_patch as load_pem:
             with pytest.raises(ValueError):
                 crypt.Verifier.from_string(cert_bytes)
             load_pem.assert_called_once_with(cert_bytes, 'CERTIFICATE')
@@ -161,13 +164,17 @@
             six.StringIO(_helpers.from_bytes(key_bytes)),
             crypt._PKCS8_MARKER)
 
-        with mock.patch('pyasn1.codec.der.decoder.decode') as mock_decode:
-            key_info, remaining = None, 'extra'
-            mock_decode.return_value = (key_info, remaining)
+        key_info, remaining = None, 'extra'
+        decode_patch = mock.patch(
+            'pyasn1.codec.der.decoder.decode',
+            return_value=(key_info, remaining),
+            autospec=True)
+
+        with decode_patch as decode:
             with pytest.raises(ValueError):
                 crypt.Signer.from_string(key_bytes)
             # Verify mock was called.
-            mock_decode.assert_called_once_with(
+            decode.assert_called_once_with(
                 pem_bytes, asn1Spec=crypt._PKCS8_SPEC)
 
     def test_from_string_pkcs8_unicode(self):
diff --git a/tests/transport/test_grpc.py b/tests/transport/test_grpc.py
index 5faa807..84e4b56 100644
--- a/tests/transport/test_grpc.py
+++ b/tests/transport/test_grpc.py
@@ -70,10 +70,10 @@
             [('authorization', 'Bearer {}'.format(credentials.token))], None)
 
 
-@mock.patch('grpc.composite_channel_credentials')
-@mock.patch('grpc.metadata_call_credentials')
-@mock.patch('grpc.ssl_channel_credentials')
-@mock.patch('grpc.secure_channel')
+@mock.patch('grpc.composite_channel_credentials', autospec=True)
+@mock.patch('grpc.metadata_call_credentials', autospec=True)
+@mock.patch('grpc.ssl_channel_credentials', autospec=True)
+@mock.patch('grpc.secure_channel', autospec=True)
 def test_secure_authorized_channel(
         secure_channel, ssl_channel_credentials, metadata_call_credentials,
         composite_channel_credentials):
@@ -105,10 +105,10 @@
     assert channel == secure_channel.return_value
 
 
-@mock.patch('grpc.composite_channel_credentials')
-@mock.patch('grpc.metadata_call_credentials')
-@mock.patch('grpc.ssl_channel_credentials')
-@mock.patch('grpc.secure_channel')
+@mock.patch('grpc.composite_channel_credentials', autospec=True)
+@mock.patch('grpc.metadata_call_credentials', autospec=True)
+@mock.patch('grpc.ssl_channel_credentials', autospec=True)
+@mock.patch('grpc.secure_channel', autospec=True)
 def test_secure_authorized_channel_explicit_ssl(
         secure_channel, ssl_channel_credentials, metadata_call_credentials,
         composite_channel_credentials):
