miércoles, 15 de diciembre de 2010

Semana 11 - Pruebas unitarias

 
Una prueba unitaria es probar una procion de codigo en sus diferentes esenarios para saber si funciona o no, detectar las fallas de esa porcion de codigo, una prueba unitaria no implica que se ejecute simplemente dentro de una clase, assembly o con acceso a datos o sin ellos.

Para implementar las clases utilice Python y para las pruebas unitarias PyUnit.

Clases:

- Clase clsPoliza.py
import sys
import MySQLdb

#Clase Poliza (Los datos generales)
class Poliza(object):
def __init__(self,IdPoliza,
Numero,AgenteId,ClienteId,CompaniaId,TipoPolizaId,FechaInicio,FechaFin,Precio,FormaPagoId,CoberturaId,PolizaAnterior,self.IdPoliza = IdPoliza
self.Numero = Numero
self.AgenteId = AgenteId
self.ClienteId = ClienteId
self.CompaniaId = CompaniaId
self.TipoPolizaId = TipoPolizaId
self.FechaInicio = FechaInicio
self.FechaFin = FechaFin
self.Precio = Precio
self.FormaPagoId = FormaPagoId
self.CoberturaId = CoberturaId
self.PolizaAnterior = PolizaAnterior
self.BeneficiarioId = BeneficiarioId

#Creacion de Poliza
def AltaPoliza(self) :
try:
#Conectar a base de datos
mysql = MySQLdb.connect(user="root", passwd="ofe2011", db="SEGUROS")
mysql_cursor = mysql.cursor()

#Parametros
parametros =(self.Numero,self.AgenteId,self.ClienteId,self.CompaniaId,self.TipoPolizaId,self.FechaInicio,self.FechaFin,self.Precio,

#Ejecutar el store para crear la poliza
results = mysql_cursor.callproc( "SPC_Poliza",parametros)
#Leer el id de la Poliza recien creada(identity)
rows = mysql_cursor.fetchall()

for row in rows:
#Imprimimos el Id de la Poliza recien creada
print row[0]

#Cerramos conexiones
mysql_cursor.close()
mysql.close()

#Excepcion
except MySQLdb.Error, e:
print "MySQL Error %d: %s" % ( e.args[0], e.args[1] )
sys.exit(1)

#Modificar Poliza
def ModificarPoliza(self) :
try:
#Conectar a base de datos
mysql = MySQLdb.connect(user="root", passwd="ofe2011", db="SEGUROS")
mysql_cursor = mysql.cursor()
#Parametros
parametros = (self.IdPoliza,
self.Numero,self.AgenteId,self.ClienteId,self.CompaniaId,self.TipoPolizaId,self.FechaInicio,self.FechaFin,self.Precio,

#Ejecutar el store para crear la poliza
results = mysql_cursor.callproc( "SPM_Poliza",parametros)

#Cerramos conexiones
mysql_cursor.close()
mysql.close()

#Regresa verdadero cuando la poliza se modifico correctamente
return True

#Excepcion
except MySQLdb.Error, e:
print "MySQL Error %d: %s" % ( e.args[0], e.args[1] )
sys.exit(1)


#Eliminar Poliza
def EliminarPoliza(self) :

try:
#Conectar a base de datos
mysql = MySQLdb.connect(user="root", passwd="ofe2011", db="SEGUROS")
mysql_cursor = mysql.cursor()

#Ejecultar store para eliminar la poliza
results = mysql_cursor.callproc( "SPE_Poliza",self.IdPoliza)

#Cerramos conexiones
mysql_cursor.close()
mysql.close()

#Regresa verdadero cuando la poliza se elimino correctamente
return True

#Excepcion
except MySQLdb.Error, e:
print "MySQL Error %d: %s" % ( e.args[0], e.args[1] )
sys.exit(1)

#Leer Poliza
def LeerPoliza(self) :
try:
#Conectar a base de datos
mysql = MySQLdb.connect(user="root", passwd="ofe2011", db="SEGUROS")
mysql_cursor = mysql.cursor()

#Parametros
parametros = self.IdPoliza
#Ejecutar el store para leer la poliza
mysql_cursor.callproc( "SPL_Poliza", parametros)
rows = mysql_cursor.fetchall()

#Imprimir resultados
for row in rows:
print row[0]
print row[1]
print row[2]
print row[3]
print row[4]
print row[5]
print row[6]
print row[7]
print row[8]
print row[9]
print row[10]
print row[11]
print row[12]

#cerrar conexiones
mysql_cursor.close()
mysql.close()
#Excepcion
except MySQLdb.Error, e:
print "MySQL Error %d: %s" % ( e.args[0], e.args[1] )
sys.exit(1)

- clsAgente.py

import sys
import MySQLdb

#Clase Agente
class Agente(object):
def __init__(self,IdAgente, Clave, Nombres, ApPaterno, ApMaterno) :

self.IdAgente = IdAgente
self.Clave = Clave
self.Nombres = Nombres
self.ApPaterno = ApPaterno
self.ApMaterno = ApMaterno

#Creacion de Agente
def AltaAgente(self) :
try:
#Conectar a base de datos
mysql = MySQLdb.connect(user="root", passwd="ofe2011", db="SEGUROS")
mysql_cursor = mysql.cursor()

#Parametros
parametros = (self.Clave,self.Nombres,self.ApPaterno,self.ApMaterno)
#Ejecutar el store para crear el agente
results = mysql_cursor.callproc( "SPC_Agente",parametros)

#Leer el id del Agente recien creada(identity)
rows = mysql_cursor.fetchall()
for row in rows:
#Imprimimos el Id del Agente recien creado
print row[0]

#Cerramos conexiones
mysql_cursor.close()
mysql.close()

#Excepcion
except MySQLdb.Error, e:
print "MySQL Error %d: %s" % ( e.args[0], e.args[1] )
sys.exit(1)

#Modificar Agente
def ModificarAgente(self) :
try:
#Conectar a base de datos
mysql = MySQLdb.connect(user="root", passwd="ofe2011", db="SEGUROS")
mysql_cursor = mysql.cursor()

#Parametros
parametros = (self.IdAgente, self.Clave,self.Nombres,self.ApPaterno,self.ApMaterno)
#Ejecutar el store para modificar el agente
results = mysql_cursor.callproc( "SPM_Agente",parametros)

#Cerrar conexiones
mysql_cursor.close()
mysql.close()

#Regresa verdadero cuando el agente se modifico correctamente
return True

except MySQLdb.Error, e:
print "MySQL Error %d: %s" % ( e.args[0], e.args[1] )
sys.exit(1)

#Eliminar Agente
def EliminarAgente(self) :
try:
#Conectar a base de datos
mysql = MySQLdb.connect(user="root", passwd="ofe2011", db="SEGUROS")
mysql_cursor = mysql.cursor()

#Ejecutar el store para eliminar el agente
results = mysql_cursor.callproc( "SPE_Agente",self.IdAgente)

#Cerramos conexiones
mysql_cursor.close()
mysql.close()
#Regresa verdadero cuando el agente se elimino correctamente
return True
#Excepcion
except MySQLdb.Error, e:
print "MySQL Error %d: %s" % ( e.args[0], e.args[1] )
sys.exit(1)

#Leer Agente
def LeerAgente(self) :
try:
#Conectar a base de datos
mysql = MySQLdb.connect(user="root", passwd="ofe2011", db="SEGUROS")
mysql_cursor = mysql.cursor()

#Parametros
parametros = self.IdAgente
#Ejecutar el store para leer al agente
mysql_cursor.callproc( "SPL_Agente", parametros)
rows = mysql_cursor.fetchall()

#Imprimir resultados
for row in rows:
print row[0]
print row[1]
print row[2]
print row[3]
print row[4]

#Cerrar conexiones
mysql_cursor.close()
mysql.close()

#Excepcion
except MySQLdb.Error, e:
print "MySQL Error %d: %s" % ( e.args[0], e.args[1] )
sys.exit(1)
Pruebas unitarias:
- TestPoliza.py

import unittest
import clsPoliza

#Pruebas unitarias Clase Poliza
class TestPoliza(unittest.TestCase):
#Verifica si el metodo inserto la poliza; validando si el id que regresa (identity) es mayor que cero
def testAlta(self):
r = [clsPoliza.Poliza("11","8201652",
1,3,4,2,"2010/12/14","2010/12/15","15689",1,3,0,1).AltaPoliza()]

self.assertTrue(r>0)

#Verifica si se modifico la poliza; ya que si se modifico la poliza regresa True
def testModificar(self):
r = [clsPoliza.Poliza("11","8201652",
1,3,4,2,"2010/12/14","2010/12/15","15689",1,3,0,1).ModificarPoliza()]

self.assertTrue(r)

#Verifica si se elimino la poliza; ya que si se elimino la poliza regresa True
def testEliminar(self):
r = [clsPoliza.Poliza("13","8201652",
1,3,4,2,"2010/12/14","2010/12/15","15689",1,3,0,1).ModificarPoliza()]

self.assertTrue(r)

if __name__ == "__main__":
unittest.main()
- TestAgente.py
import unittest
import clsAgente

class TestAgente(unittest.TestCase):
#Verifica si el metodo inserto el agente; validando si el id que regresa (identity) es mayor que cero
def testAlta(self):
r = [clsAgente.Agente("3","9856", "Karina","Montemayor","Garza").AltaAgente()]
self.assertTrue(r>0)

#Verifica si se modifico el agente; ya que si se modifico el agente regresa True
def testModificar(self):
r = [clsAgente.Agente("3","9856", "Karina","Montemayor","Garza").ModificarAgente()]
self.assertTrue(r)

#Verifica si se elimino el agente; ya que si se elimino el agente regresa True
def testEliminar(self):
r = [clsAgente.Agente("3","9856", "Karina","Montemayor","Garza").EliminarAgente()]
self.assertTrue(r)

if __name__ == "__main__":
unittest.main()
Ejecutar pruebas en Terminal:

Archivo con codigo y archivo README: