Lección 4 de 8 · intermedio · 15 min
Verificadores: tests de Odoo que guían al agente
TransactionCase, tagged tests, Form y linters como el "oráculo" del loop.
El test es la conversación
En un loop, el test no es un trámite final: es el mensaje que el sistema le devuelve al agente. Cuanto más preciso el fallo, más rápido converge.
from odoo.tests import TransactionCase, tagged
@tagged('post_install', '-at_install', 'loop')
class TestValorizacion(TransactionCase):
def test_bloquea_avance_mayor_100(self):
obra = self.env['project.project'].create({'name': 'Obra A'})
self.env['construccion.valorizacion'].create(
{'obra_id': obra.id, 'avance_pct': 0.8})
with self.assertRaisesRegex(Exception, 'avance acumulado'):
self.env['construccion.valorizacion'].create(
{'obra_id': obra.id, 'avance_pct': 0.3})
Capas de verificación
- Instalación del módulo (detecta XML, manifest y accesos rotos).
- Tests unitarios de reglas de negocio.
- Tests de formulario con
odoo.tests.Formpara onchange y vistas. - Lint (pylint-odoo, ruff) para estilo y errores comunes.
Ejecuta primero lo más barato; solo si pasa, lo más caro.
← Anterior
Escribir la spec: CLAUDE.md y specs de módulo
Siguiente →
Contexto: skills, MCP y documentación de la versión
Practica con 5 casos reales
Descarga la guía gratuita con agentes Python para Odoo, de Junior a Senior.
Quiero la guía →