Skip to content
Snippets Groups Projects
Commit 5e70b795 authored by Iuri de Silvio's avatar Iuri de Silvio
Browse files

Merge pull request #31 from CodingForChange/refatoracao-webtest

Testando o app WSGI do bottle com webtest.TestApp
parents 1046dee8 02a7a4db
No related branches found
Tags v1.3.1
No related merge requests found
......@@ -2,4 +2,6 @@ language: python
before_install: pip install -r requirements.txt
script: nosetests
\ No newline at end of file
script: nosetests
services: mongodb
......@@ -3,3 +3,4 @@ lxml==2.3.5
nose==1.2.1
pymongo==2.4
requests==0.14.2
webtest==1.4.3
# encoding: utf-8
import unittest
import CepTracker
import webtest
import bottle
class CepTrackerTest(unittest.TestCase):
def setUp(self):
self.tracker = CepTracker.CepTracker()
import CepTracker
import PostmonServer
class PostmonBaseTest(object):
expected = {
'01330000': [{
'logradouro': 'Rua Rocha',
'bairro': 'Bela Vista',
'cidade': u'São Paulo',
'estado': 'SP'
}],
'85100000': [{
'cidade': u'Jordão (Guarapuava)',
'estado': 'PR'
}],
'75064590': [{
'logradouro': 'Rua A',
'bairro': 'Vila Jaiara',
'cidade': u'Anápolis',
'estado': 'GO'
}, {
'logradouro': 'Rua A',
'bairro': 'Vila Jaiara Setor Leste',
'cidade': u'Anápolis',
'estado': 'GO'
}]
}
def test_cep_com_rua(self):
'''
Logradouro: Rua Rocha
Bairro: Bela Vista
Localidade / UF: São Paulo /SP
CEP: 01330000
'''
result = self.tracker.track('01330000')
self.assertTrue(len(result) == 1)
self.assertEqual(result[0]['cep'], '01330000')
self.assertEqual(result[0]['logradouro'], 'Rua Rocha')
self.assertEqual(result[0]['cidade'], u'São Paulo')
self.assertEqual(result[0]['estado'], 'SP')
self.assertIsNotNone(result[0]['v_date'])
self.assertCep('01330000')
def test_cep_sem_rua(self):
'''
Localidade / UF: Jordão (Guarapuava) /PR - - Povoado
CEP: 85100000
'''
result = self.tracker.track('85100000')
self.assertTrue(len(result) == 1)
self.assertEqual(result[0]['cep'], '85100000')
self.assertEqual(result[0]['cidade'], u'Jordão (Guarapuava)')
self.assertEqual(result[0]['estado'], 'PR')
self.assertIsNotNone(result[0]['v_date'])
self.assertCep('85100000')
def test_cep_inexistente(self):
self.assertCep('99999999')
'''
CEP: 99999999
'''
def test_cep_com_mais_de_um_resultado(self):
self.assertCep('75064590')
result = self.tracker.track('99999999')
self.assertTrue(len(result) == 0)
class CepTrackerTest(unittest.TestCase, PostmonBaseTest):
def test_cep_com_mais_de_um_resultado(self):
def setUp(self):
self.tracker = CepTracker.CepTracker()
'''
A busca pelo CEP 75064590 retorna dois resultados
def get_cep(self, cep):
return self.tracker.track(cep)
Logradouro: Rua A
Bairro: Vila Jaiara
Localidade / UF: Anápolis /GO
CEP: 75064590
def assertCep(self, cep):
Logradouro: Rua A
Bairro: Vila Jaiara Setor Leste
Localidade / UF: Anápolis /GO
CEP: 75064379
'''
result = self.get_cep(cep)
expected = self.expected.get(cep, [])
result = self.tracker.track('75064590')
self.assertEqual(len(expected), len(result))
self.assertTrue(len(result) == 2)
self.assertEqual(result[0]['cep'], '75064590')
self.assertEqual(result[0]['logradouro'], 'Rua A')
self.assertEqual(result[0]['bairro'], 'Vila Jaiara')
self.assertEqual(result[0]['cidade'], u'Anápolis')
self.assertEqual(result[0]['estado'], 'GO')
self.assertIsNotNone(result[0]['v_date'])
for e, r in zip(expected, result):
for key, value in e.items():
self.assertIn(key, r)
self.assertEqual(value, r[key])
self.assertEqual(result[1]['cep'], '75064379')
self.assertEqual(result[1]['logradouro'], 'Rua A')
self.assertEqual(result[1]['bairro'], 'Vila Jaiara Setor Leste')
self.assertEqual(result[1]['cidade'], u'Anápolis')
self.assertEqual(result[1]['estado'], 'GO')
self.assertIsNotNone(result[1]['v_date'])
self.assertIn('v_date', r)
class CepTrackerMockTest(CepTrackerTest):
......@@ -102,3 +85,30 @@ class CepTrackerMockTest(CepTrackerTest):
def _request_mock(self, cep):
with open('test/assets/' + cep + '.html') as f:
return f.read().decode('latin-1')
class PostmonWebTest(unittest.TestCase, PostmonBaseTest):
'''
Teste do servidor do Postmon
'''
def setUp(self):
self.app = webtest.TestApp(bottle.app())
def get_cep(self, cep):
response = self.app.get('/cep/' + cep)
return response.json
def assertCep(self, cep):
expected = self.expected.get(cep, None)
try:
result = self.get_cep(cep)
except webtest.AppError as ex:
if not expected and '404' in ex.message and cep in ex.message:
return
for k, v in expected[0].items():
self.assertEqual(v, result[k])
self.assertNotIn('v_date', result)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment