diff --git a/tests/modeltests/user_commands/management/commands/dance.py b/tests/modeltests/user_commands/management/commands/dance.py
index a504d486d6..acefe09271 100644
--- a/tests/modeltests/user_commands/management/commands/dance.py
+++ b/tests/modeltests/user_commands/management/commands/dance.py
@@ -11,4 +11,4 @@ class Command(BaseCommand):
     ]
 
     def handle(self, *args, **options):
-        print "I don't feel like dancing %s." % options["style"]
+        self.stdout.write("I don't feel like dancing %s." % options["style"])
diff --git a/tests/modeltests/user_commands/models.py b/tests/modeltests/user_commands/models.py
index 10ccdb8e2c..f2aa549bb9 100644
--- a/tests/modeltests/user_commands/models.py
+++ b/tests/modeltests/user_commands/models.py
@@ -12,22 +12,3 @@ For more details on how to define your own ``manage.py`` commands, look at the
 ``django.core.management.commands`` directory. This directory contains the
 definitions for the base Django ``manage.py`` commands.
 """
-
-__test__ = {'API_TESTS': """
->>> from django.core import management
-
-# Invoke a simple user-defined command
->>> management.call_command('dance', style="Jive")
-I don't feel like dancing Jive.
-
-# Invoke a command that doesn't exist
->>> management.call_command('explode')
-Traceback (most recent call last):
-...
-CommandError: Unknown command: 'explode'
-
-# Invoke a command with default option `style`
->>> management.call_command('dance')
-I don't feel like dancing Rock'n'Roll.
-
-"""}
diff --git a/tests/modeltests/user_commands/tests.py b/tests/modeltests/user_commands/tests.py
new file mode 100644
index 0000000000..84aa7a53d5
--- /dev/null
+++ b/tests/modeltests/user_commands/tests.py
@@ -0,0 +1,21 @@
+from StringIO import StringIO
+
+from django.test import TestCase
+from django.core import management
+from django.core.management.base import CommandError
+
+class CommandTests(TestCase):
+    def test_command(self):
+        out = StringIO()
+        management.call_command('dance', stdout=out)
+        self.assertEquals(out.getvalue(),
+            "I don't feel like dancing Rock'n'Roll.")
+
+    def test_command_style(self):
+        out = StringIO()
+        management.call_command('dance', style='Jive', stdout=out)
+        self.assertEquals(out.getvalue(),
+            "I don't feel like dancing Jive.")
+
+    def test_explode(self):
+        self.assertRaises(CommandError, management.call_command, ('explode',))
\ No newline at end of file