Merge pull request #208 from CartoDB/207-fix-test_if_obs_search_is_ok

207 fix test if obs search is ok
This commit is contained in:
Rafa de la Torre
2016-06-21 18:34:46 +02:00
committed by GitHub
2 changed files with 38 additions and 3 deletions

View File

@@ -2,9 +2,11 @@
This are the automatic integration tests for geocoder api (both client and server)
### Usage
In order to execute the tests you have to execute the `run_tests` python script:
In order to execute the tests you have to execute the `run_tests.py` python script:
``` python run_tests.py [--host=cartodb.com] username api_key```
```sh
python run_tests.py [--host=cartodb.com] username api_key
```
You can define the host where is going to execute the SQL API queries to test the
geocoder API. By default the value is `cartodb.com` but you can put the host you need.
@@ -19,3 +21,34 @@ This suite of tests test the following parts of the geocoding API through the SQ
- Postal code functions
- Ip address functions
- Street address functions (This will call Heremaps or Google so it will cost you 2 credits)
- Routing functions
- Isolines functions
- Data Observatory functions
### How to debug the tests
You won't be able to plug a debugger when using the `run_test.py` because of the usage of a subprocess and the piping.
You should be aware that some tests require some extra setup (a test table), that you'll need to do on your own in some cases (check the `ImportHelper.import_test_dataset`)
In order to do so, you need to use plain `nosetests` which comes prepared to that.
First, add this to the python test code:
```python
from nose.tools import set_trace; set_trace()
```
Secondly, execute just your test with this:
```ssh
GEOCODER_API_TEST_USERNAME=your_username \
GEOCODER_API_TEST_API_KEY=your_api_key \
GEOCODER_API_TEST_TABLE_NAME=your_test_table \
GEOCODER_API_TEST_HOST=your_target_test_host \
nosetests --where=integration/ test_data_observatory_functions.py:TestDataObservatoryFunctions.test_if_obs_search_is_ok
```
(replace the environment variables, test file, class and function according to your needs)
TODO: we need to refactor the test code a little to avoid these hindrances

View File

@@ -129,7 +129,9 @@ class TestDataObservatoryFunctions(TestCase):
assert_equal(e.message[0], "The api_key must be provided")
def test_if_obs_search_is_ok(self):
query = "SELECT id FROM OBS_Search('total_pop') LIMIT 1;&api_key={0}".format(self.env_variables['api_key'])
sql = "SELECT id FROM OBS_Search('total_pop') WHERE id LIKE 'es.ine%' LIMIT 1;"
import urllib
query = "{0}&api_key={1}".format(urllib.quote(sql), self.env_variables['api_key'])
result = IntegrationTestHelper.execute_query(self.sql_api_url, query)
assert_not_equal(result['id'], None)
assert_equal(result['id'], 'es.ine.t1_1')