which test the API interface using a BDD test framework and there are unit
tests for specific PHP functions.
-This test directory is sturctured as follows:
+This test directory is structured as follows:
```
-+- bdd Functional API tests
|
+- php PHP unit tests
+- python Python unit tests
- +- scenes Geometry test data
+- testdb Base data for generating API test database
+ +- testdata Additional test data used by unit tests
```
## PHP Unit Tests (`test/php`)
To execute the tests run
+ py.test-3 test/python
+
+or
+
pytest test/python
+The name of the pytest binary depends on your installation.
+
## BDD Functional Tests (`test/bdd`)
Functional tests are written as BDD instructions. For more information on
* `TEST_DB` - name of test database (db tests)
* `API_TEST_DB` - name of the database containing the API test data (api tests)
* `API_TEST_FILE` - OSM file to be imported into the API test database (api tests)
+ * `API_ENGINE` - webframe to use for running search queries, same values as
+ `nominatim serve --engine` parameter
* `DB_HOST` - (optional) hostname of database host
* `DB_PORT` - (optional) port of database on host
* `DB_USER` - (optional) username of database login
API tests should only be testing the functionality of the website PHP code.
Most tests should be formulated as BDD DB creation tests (see below) instead.
-#### Code Coverage
+#### Code Coverage (PHP engine only)
The API tests also support code coverage tests. You need to install
[PHP_CodeCoverage](https://github.com/sebastianbergmann/php-code-coverage).
These tests check that data is imported correctly into the place table. They
use the same template database as the DB Creation tests, so the same remarks apply.
-
-Note that most testing of the gazetteer output of osm2pgsql is done in the tests
-of osm2pgsql itself. The BDD tests are just there to ensure compatibility of
-the osm2pgsql and Nominatim code.