first-pass automatic testing

remotes/origin/augment_distributed_take1
John Krauss 8 years ago
parent e74964c1ee
commit d0122786db

2
.gitignore vendored

@ -2,3 +2,5 @@
src/pg/observatory--current--dev.sql
src/pg/observatory--dev--current.sql
src/pg/observatory--dev.sql
venv
*.pyc

@ -0,0 +1,15 @@
## Automatic tests and utilities
### Installation
Python 2.7 should cover you. Virtualenv recommended.
virtualenv venv
source venv/bin/activate
pip install -r requirements.txt
### Execution
Run automated tests against a hostname:
(venv) OBS_HOSTNAME=<hostname.cartodb.com> OBS_API_KEY=foobar nosetests autotest.py

@ -0,0 +1,66 @@
from nose.tools import assert_equal
from nose_parameterized import parameterized
import os
import re
import requests
HOSTNAME = os.environ['OBS_HOSTNAME']
API_KEY = os.environ['OBS_API_KEY']
def query(q, **options):
'''
Query the account. Returned is the response, wrapped by the requests
library.
'''
url = 'https://{hostname}/api/v2/sql'.format(hostname=HOSTNAME)
params = options.copy()
params['q'] = re.sub(r'\s+', ' ', q)
params['api_key'] = API_KEY
return requests.get(url, params=params)
MEASURE_COLUMNS = [(r['id'], ) for r in query('''
SELECT id FROM observatory.obs_column
WHERE type ILIKE 'numeric'
AND weight > 0
''').json()['rows']]
CATEGORY_COLUMNS = [(r['id'], ) for r in query('''
SELECT id FROM observatory.obs_column
WHERE type ILIKE 'text'
AND weight > 0
''').json()['rows']]
BOUNDARY_COLUMNS = [(r['id'], ) for r in query('''
SELECT id FROM observatory.obs_column
WHERE type ILIKE 'geometry'
AND weight > 0
''').json()['rows']]
@parameterized(MEASURE_COLUMNS)
def test_measure_points(column_id):
resp = query('''
SELECT *
FROM cdb_observatory.OBS_GetMeasure(cdb_observatory._TestPoint(),
'{column_id}')
'''.format(column_id=column_id))
assert_equal(resp.status_code, 200)
@parameterized(CATEGORY_COLUMNS)
def test_category_points(column_id):
resp = query('''
SELECT *
FROM cdb_observatory.OBS_GetCategory(cdb_observatory._TestPoint(),
'{column_id}')
'''.format(column_id=column_id))
assert_equal(resp.status_code, 200)
@parameterized(BOUNDARY_COLUMNS)
def test_boundary_points(column_id):
resp = query('''
SELECT *
FROM cdb_observatory.OBS_GetBoundary(cdb_observatory._TestPoint(),
'{column_id}')
'''.format(column_id=column_id))
assert_equal(resp.status_code, 200)

@ -0,0 +1,3 @@
requests
nose
nose_parameterized
Loading…
Cancel
Save