Index: tests/modeltests/empty/no_models/__init__.py
===================================================================
Index: tests/modeltests/empty/no_models/tests.py
===================================================================
--- tests/modeltests/empty/no_models/tests.py	(revision 0)
+++ tests/modeltests/empty/no_models/tests.py	(revision 0)
@@ -0,0 +1,5 @@
+from django.test import TestCase
+
+class NoModelTests(TestCase):
+    """ A placeholder test case. See modeltests.empty.tests for more info. """
+    pass
Index: tests/modeltests/empty/tests.py
===================================================================
--- tests/modeltests/empty/tests.py	(revision 16887)
+++ tests/modeltests/empty/tests.py	(working copy)
@@ -1,4 +1,10 @@
+from __future__ import with_statement
+
+from django.conf import settings
+from django.core.exceptions import ImproperlyConfigured
+from django.db.models.loading import get_app
 from django.test import TestCase
+from django.test.utils import override_settings
 
 from models import Empty
 
@@ -13,3 +19,19 @@
         self.assertTrue(m.id is not None)
         existing = Empty(m.id)
         existing.save()
+
+class NoModelTests(TestCase):
+    """
+    Test for #7198 to ensure that the proper error message is raised
+    when attempting to load an app with no models.py file.
+
+    Becuase the test runner won't currently load a test module with no
+    models.py file, this TestCase instead lives in this module.
+
+    It seemed like an appropriate home for it.
+    """
+    @override_settings(INSTALLED_APPS=("modeltests.empty.no_models",))
+    def test_no_models(self):
+        with self.assertRaisesRegexp(ImproperlyConfigured,
+                    'App with label no_models is missing a models.py module.'):
+            get_app('no_models')
Index: django/db/models/loading.py
===================================================================
--- django/db/models/loading.py	(revision 16887)
+++ django/db/models/loading.py	(working copy)
@@ -146,7 +146,7 @@
                     if mod is None:
                         if emptyOK:
                             return None
-                        raise ImproperlyConfigured("App with label %s is missing a models.py module.")
+                        raise ImproperlyConfigured("App with label %s is missing a models.py module." % app_label)
                     else:
                         return mod
             raise ImproperlyConfigured("App with label %s could not be found" % app_label)
