diff --git a/tests/suites/main_test.function b/tests/suites/main_test.function
index ac5322e..ed5d414 100644
--- a/tests/suites/main_test.function
+++ b/tests/suites/main_test.function
@@ -7,7 +7,8 @@
     if( (*str)[0] != '"' ||
         (*str)[strlen( *str ) - 1] != '"' )
     {
-        mbedtls_printf( "Expected string (with \"\") for parameter and got: %s\n", *str );
+        mbedtls_fprintf( stderr,
+            "Expected string (with \"\") for parameter and got: %s\n", *str );
         return( -1 );
     }
 
@@ -60,7 +61,8 @@
 
 MAPPING_CODE
 
-    mbedtls_printf( "Expected integer for parameter and got: %s\n", str );
+    mbedtls_fprintf( stderr,
+                    "Expected integer for parameter and got: %s\n", str );
     return( KEY_VALUE_MAPPING_NOT_FOUND );
 }
 
@@ -77,6 +79,12 @@
 /*----------------------------------------------------------------------------*/
 /* Test dispatch code */
 
+#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__))
+#include <unistd.h>
+#endif
+#include <stdio.h>
+
+
 int dep_check( char *str )
 {
     if( str == NULL )
@@ -249,6 +257,7 @@
     const char **test_files = NULL;
     int testfile_count = 0;
     int option_verbose = 0;
+    int tests_stdout;
 
     /* Other Local variables */
     int arg_index = 1;
@@ -343,7 +352,8 @@
         {
             if( unmet_dep_count > 0 )
             {
-                mbedtls_printf("FATAL: Dep count larger than zero at start of loop\n");
+                mbedtls_fprintf( stderr,
+                    "FATAL: Dep count larger than zero at start of loop\n");
                 mbedtls_exit( MBEDTLS_EXIT_FAILURE );
             }
             unmet_dep_count = 0;
@@ -379,7 +389,7 @@
                         unmet_dependencies[ unmet_dep_count ] = strdup(params[i]);
                         if(  unmet_dependencies[ unmet_dep_count ] == NULL )
                         {
-                            mbedtls_printf("FATAL: Out of memory\n");
+                            mbedtls_fprintf( stderr, "FATAL: Out of memory\n");
                             mbedtls_exit( MBEDTLS_EXIT_FAILURE );
                         }
                         unmet_dep_count++;
@@ -395,7 +405,50 @@
             if( unmet_dep_count == 0 )
             {
                 test_errors = 0;
+
+#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__))
+                /* Suppress all output from the library unless we're verbose
+                 * mode
+                 */
+                if( !option_verbose )
+                {
+                    /* Redirect all stdout output to /dev/null */
+                    tests_stdout = dup( fileno(stdout) );
+                    if( tests_stdout == -1 )
+                    {
+                        /* Redirection has failed with no stdout so exit */
+                        exit(1);
+                    }
+
+                    fflush( stdout );
+                    fclose( stdout );
+                    stdout = fopen("/dev/null", "w" );
+                    if( stdout == NULL )
+                    {
+                        /* Redirection has failed with no stdout so exit */
+                        exit(1);
+                    }
+                }
+#endif /* __unix__ || __APPLE__ __MACH__ */
+
                 ret = dispatch_test( cnt, params );
+
+#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__))
+                if( !option_verbose )
+                {
+                    /* Restore stdout */
+                    fflush( stdout );
+                    fclose( stdout );
+
+                    stdout = fdopen ( tests_stdout, "w");
+                    if( stdout == NULL )
+                    {
+                        /* Redirection has failed with no stdout so exit */
+                        exit(1);
+                    }
+                }
+#endif /* __unix__ || __APPLE__ __MACH__ */
+
             }
 
             if( unmet_dep_count > 0 || ret == DISPATCH_UNSUPPORTED_SUITE )
