Title: Using PHP Unit and WP-CLI with WordPress
Last modified: April 12, 2017

---

# Using PHP Unit and WP-CLI with WordPress

 *  [Deryck](https://wordpress.org/support/users/deryck/)
 * (@deryck)
 * [9 years, 1 month ago](https://wordpress.org/support/topic/using-php-unit-and-wp-cli-with-wordpress/)
 * Hi, I can’t make it work with WordPress.
 * I use: wp scaffold plugin test-plugin and all runs fine.
 * Then I use: bash bin/install-wp-tests.sh wp_test_plugin root <password> localhost:
   8889 (because is Mamp Pro)
 * the output:
 *     ```
       + install_wp
       + '[' -d /tmp/wordpress/ ']'
       + return
       + install_test_suite
       ++ uname -s
       + [[ Darwin == \D\a\r\w\i\n ]]
       + local 'ioption=-i .bak'
       + '[' '!' -d /tmp/wordpress-tests-lib ']'
       + '[' '!' -f wp-tests-config.php ']'
       + download https://develop.svn.wordpress.org/tags/4.7.3/wp-tests-config-sample.php /tmp/wordpress-tests-lib/wp-tests-config.php
       ++ which curl
       + '[' /usr/bin/curl ']'
       + curl -s https://develop.svn.wordpress.org/tags/4.7.3/wp-tests-config-sample.php
       ++ echo /tmp/wordpress/
       ++ sed 's:/\+$::'
       + WP_CORE_DIR=/tmp/wordpress/
       + sed -i .bak 's:dirname( __FILE__ ) . '\''/src/'\'':'\''/tmp/wordpress//'\'':' /tmp/wordpress-tests-lib/wp-tests-config.php
       + sed -i .bak s/youremptytestdbnamehere/wp_test_plugin/ /tmp/wordpress-tests-lib/wp-tests-config.php
       + sed -i .bak s/yourusernamehere/root/ /tmp/wordpress-tests-lib/wp-tests-config.php
       + sed -i .bak s/yourpasswordhere/root/ /tmp/wordpress-tests-lib/wp-tests-config.php
       + sed -i .bak 's|localhost|localhost:8889|' /tmp/wordpress-tests-lib/wp-tests-config.php
       + install_db
       + '[' false = true ']'
       + PARTS=(${DB_HOST//\:/ })
       + local PARTS
       + local DB_HOSTNAME=localhost
       + local DB_SOCK_OR_PORT=8889
       + local EXTRA=
       + '[' -z localhost ']'
       ++ echo 8889
       ++ grep -e '^[0-9]\{1,\}$'
       + '[' 8889 ']'
       + EXTRA=' --host=localhost --port=8889 --protocol=tcp'
       + mysqladmin create wp_test_plugin --user=root --password=**** --host=localhost --port=8889 --protocol=tcp
       Warning: Using a password on the command line interface can be insecure.
       ```
   
 * Then I ran: phpunit
 * The output:
 *     ```
       <!DOCTYPE html>
       <!-- Ticket #11289, IE bug fix: always pad the error page with enough characters such that it is greater than 512 bytes, even after gzip compression abcdefghijklmnopqrstuvwxyz1234567890aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz11223344556677889900abacbcbdcdcededfefegfgfhghgihihjijikjkjlklkmlmlnmnmononpopoqpqprqrqsrsrtstsubcbcdcdedefefgfabcadefbghicjkldmnoepqrfstugvwxhyz1i234j567k890laabmbccnddeoeffpgghqhiirjjksklltmmnunoovppqwqrrxsstytuuzvvw0wxx1yyz2z113223434455666777889890091abc2def3ghi4jkl5mno6pqr7stu8vwx9yz11aab2bcc3dd4ee5ff6gg7hh8ii9j0jk1kl2lmm3nnoo4p5pq6qrr7ss8tt9uuvv0wwx1x2yyzz13aba4cbcb5dcdc6dedfef8egf9gfh0ghg1ihi2hji3jik4jkj5lkl6kml7mln8mnm9ono
       -->
       <html xmlns="http://www.w3.org/1999/xhtml" dir='ltr'>
       <head>
       	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
       	<meta name="viewport" content="width=device-width">
       		<title>WordPress &rsaquo; Error</title>
       	<style type="text/css">
       		html {
       			background: #f1f1f1;
       		}
       		body {
       			background: #fff;
       			color: #444;
       			font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
       			margin: 2em auto;
       			padding: 1em 2em;
       			max-width: 700px;
       			-webkit-box-shadow: 0 1px 3px rgba(0,0,0,0.13);
       			box-shadow: 0 1px 3px rgba(0,0,0,0.13);
       		}
       		h1 {
       			border-bottom: 1px solid #dadada;
       			clear: both;
       			color: #666;
       			font-size: 24px;
       			margin: 30px 0 0 0;
       			padding: 0;
       			padding-bottom: 7px;
       		}
       		#error-page {
       			margin-top: 50px;
       		}
       		#error-page p {
       			font-size: 14px;
       			line-height: 1.5;
       			margin: 25px 0 20px;
       		}
       		#error-page code {
       			font-family: Consolas, Monaco, monospace;
       		}
       		ul li {
       			margin-bottom: 10px;
       			font-size: 14px ;
       		}
       		a {
       			color: #0073aa;
       		}
       		a:hover,
       		a:active {
       			color: #00a0d2;
       		}
       		a:focus {
       			color: #124964;
       		    -webkit-box-shadow:
       		    	0 0 0 1px #5b9dd9,
       				0 0 2px 1px rgba(30, 140, 190, .8);
       		    box-shadow:
       		    	0 0 0 1px #5b9dd9,
       				0 0 2px 1px rgba(30, 140, 190, .8);
       			outline: none;
       		}
       		.button {
       			background: #f7f7f7;
       			border: 1px solid #ccc;
       			color: #555;
       			display: inline-block;
       			text-decoration: none;
       			font-size: 13px;
       			line-height: 26px;
       			height: 28px;
       			margin: 0;
       			padding: 0 10px 1px;
       			cursor: pointer;
       			-webkit-border-radius: 3px;
       			-webkit-appearance: none;
       			border-radius: 3px;
       			white-space: nowrap;
       			-webkit-box-sizing: border-box;
       			-moz-box-sizing:    border-box;
       			box-sizing:         border-box;
   
       			-webkit-box-shadow: 0 1px 0 #ccc;
       			box-shadow: 0 1px 0 #ccc;
       		 	vertical-align: top;
       		}
   
       		.button.button-large {
       			height: 30px;
       			line-height: 28px;
       			padding: 0 12px 2px;
       		}
   
       		.button:hover,
       		.button:focus {
       			background: #fafafa;
       			border-color: #999;
       			color: #23282d;
       		}
   
       		.button:focus  {
       			border-color: #5b9dd9;
       			-webkit-box-shadow: 0 0 3px rgba( 0, 115, 170, .8 );
       			box-shadow: 0 0 3px rgba( 0, 115, 170, .8 );
       			outline: none;
       		}
   
       		.button:active {
       			background: #eee;
       			border-color: #999;
       		 	-webkit-box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 );
       		 	box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 );
       		 	-webkit-transform: translateY(1px);
       		 	-ms-transform: translateY(1px);
       		 	transform: translateY(1px);
       		}
   
       			</style>
       </head>
       <body id="error-page">
       	<p><h1>Error establishing a database connection</h1>
       <p>This either means that the username and password information in your <code>wp-config.php</code> file is incorrect or we can’t contact the database server at <code>localhost:8889</code>. This could mean your host’s database server is down.</p>
       <ul>
       <li>Are you sure you have the correct username and password?</li>
       <li>Are you sure that you have typed the correct hostname?</li>
       <li>Are you sure that the database server is running?</li>
       </ul>
       <p>If you’re unsure what these terms mean you should probably contact your host. If you still need help you can always visit the <a href="https://wordpress.org/support/">WordPress Support Forums</a>.</p>
       </p></body>
       </html>
       Running as single site... To run multisite, use -c tests/phpunit/multisite.xml
   
       Warning: mysqli_real_connect(): (HY000/2002): No such file or directory in /private/tmp/wordpress/wp-includes/wp-db.php on line 1538
   
       Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /private/tmp/wordpress/wp-includes/wp-db.php on line 1568
   
       Warning: mysql_connect(): No such file or directory in /private/tmp/wordpress/wp-includes/wp-db.php on line 1568
   
       wp_die called
       Message : <h1>Error establishing a database connection</h1>
       <p>This either means that the username and password information in your <code>wp-config.php</code> file is incorrect or we can’t contact the database server at <code>localhost:8889</code>. This could mean your host’s database server is down.</p>
       <ul>
       <li>Are you sure you have the correct username and password?</li>
       <li>Are you sure that you have typed the correct hostname?</li>
       <li>Are you sure that the database server is running?</li>
       </ul>
       <p>If you’re unsure what these terms mean you should probably contact your host. If you still need help you can always visit the <a href="https://wordpress.org/support/">WordPress Support Forums</a>.</p>
   
       Title : 
   
       Warning: Cannot modify header information - headers already sent by (output started at /private/tmp/wordpress-tests-lib/includes/bootstrap.php:62) in /private/tmp/wordpress/wp-includes/pluggable.php on line 1179
       ```
   
 * I can’t make phpunit work.
 * Any suggestion?
 * Regards

Viewing 2 replies - 1 through 2 (of 2 total)

 *  [Arvind Kala](https://wordpress.org/support/users/arkala25/)
 * (@arkala25)
 * [9 years, 1 month ago](https://wordpress.org/support/topic/using-php-unit-and-wp-cli-with-wordpress/#post-9021762)
 * You have to set global variable WP_TESTS_DIR = <PHP_UNIT_PATH> and set the wp-
   tests-config.php file
 * If you are struggling with wordpress installation and PHPUNIT path, You can download
   wordpress from [https://develop.svn.wordpress.org/trunk/](https://develop.svn.wordpress.org/trunk/)
 * After this is setup, no need to run /bin/install-wp-tests.sh file.
 * You can now directly run the unit test cases using phpunit command in the plugin
   root.
    -  This reply was modified 9 years, 1 month ago by [Arvind Kala](https://wordpress.org/support/users/arkala25/).
 *  Thread Starter [Deryck](https://wordpress.org/support/users/deryck/)
 * (@deryck)
 * [9 years, 1 month ago](https://wordpress.org/support/topic/using-php-unit-and-wp-cli-with-wordpress/#post-9022694)
 * Hi Arvin,
 * Thanks for your great help. With svn download, I can make it work. Anyway, I 
   would like to finally understand what’s happening with the install-wp-tests.sh
   issue.
 * When you refer to WP_TEST_DIR you are talking about changing the path in line
   15 in install-wp-tests.sh?
 * The wp-tests-config.php needs to be created manually? I ask because there is 
   no such file in the folder after .sh file is launched.
 * Apologize for my complete ignorance on the subject. I’m trying to learn about
   this and understand perfectly the logic behind creating a test with the .sh file
   after scaffolding with wp-cli. Perhaps there is a tutorial about this or something
   you can recommend to me.
 * Best Regards.

Viewing 2 replies - 1 through 2 (of 2 total)

The topic ‘Using PHP Unit and WP-CLI with WordPress’ is closed to new replies.

## Tags

 * [phpunit](https://wordpress.org/support/topic-tag/phpunit/)
 * [wp-cli](https://wordpress.org/support/topic-tag/wp-cli/)

 * In: [Developing with WordPress](https://wordpress.org/support/forum/wp-advanced/)
 * 2 replies
 * 2 participants
 * Last reply from: [Deryck](https://wordpress.org/support/users/deryck/)
 * Last activity: [9 years, 1 month ago](https://wordpress.org/support/topic/using-php-unit-and-wp-cli-with-wordpress/#post-9022694)
 * Status: not resolved

## Topics

### Topics with no replies

### Non-support topics

### Resolved topics

### Unresolved topics

### All topics
