odoo-automated-tests
Ajuda seu agente a escrever e executar testes automatizados para o Odoo, garantindo a qualidade do software.
O que ela faz
Ajuda a criar e executar testes automáticos para o sistema Odoo. Isso garante que as novas funcionalidades não quebrem as antigas.
Quando usar
- ✓Quando você cria uma nova funcionalidade e quer ter certeza que tudo continua funcionando.
- ✓Para verificar se uma parte específica do sistema responde corretamente.
- ✓Quando os testes automáticos falham e você precisa entender o porquê.
Exemplo do que pedir para a IA
“Crie um teste para a funcionalidade de criar um novo paciente no módulo hospitalar, garantindo que o nome não pode ser vazio.”
Quer saber mais? Abra as seções abaixo.
Como usar
O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.
Link da skill
Mensagem pronta para colar
Como funciona
Você descreve o que quer testar e a ferramenta gera o código do teste para você. Depois, ela te diz como executar esse teste no sistema.
Instalação
Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.
No terminal (Claude Code, Codex, Cursor), na pasta do projeto:
npx skills add sickn33/agentic-awesome-skills --skill odoo-automated-testsOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/odoo-automated-tests/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
Testes Automatizados no Odoo
Visão Geral
O Odoo possui um framework de testes integrado baseado no unittest do Python. Essa habilidade ajuda você a escrever testes de TransactionCase unidade, HttpCase testes de integração e testes de tour em JavaScript. Ela também abrange a execução de testes em pipelines de CI.
Quando Usar Esta Habilidade
- Escrever testes de unidade para a lógica de negócios de um modelo personalizado.
- Criar um teste HTTP para verificar um endpoint de controlador.
- Depurar falhas de teste em um pipeline de CI.
- Configurar a execução automatizada de testes com
--test-enable.
Como Funciona
- Ativar: Mencione
@odoo-automated-testse descreva o recurso a ser testado. - Gerar: Obtenha o código completo da classe de teste com configuração, limpeza e asserções.
- Executar: Obtenha o comando
odooexato da CLI para executar seus testes.
Exemplos
Exemplo 1: Teste de Unidade TransactionCase (padrão Odoo 15+)
# tests/test_hospital_patient.py
from odoo.tests.common import TransactionCase
from odoo.tests import tagged
from odoo.exceptions import ValidationError
@tagged('post_install', '-at_install')
class TestHospitalPatient(TransactionCase):
@classmethod
def setUpClass(cls):
# Use setUpClass for performance — runs once per class, not per test
super().setUpClass()
cls.Patient = cls.env['hospital.patient']
cls.doctor = cls.env['res.users'].browse(cls.env.uid)
def test_create_patient(self):
patient = self.Patient.create({
'name': 'John Doe',
'doctor_id': self.doctor.id,
})
self.assertEqual(patient.state, 'draft')
self.assertEqual(patient.name, 'John Doe')
def test_confirm_patient(self):
patient = self.Patient.create({'name': 'Jane Smith'})
patient.action_confirm()
self.assertEqual(patient.state, 'confirmed')
def test_empty_name_raises_error(self):
with self.assertRaises(ValidationError):
self.Patient.create({'name': ''})
def test_access_denied_for_other_user(self):
# Test security rules by running as a different user
other_user = self.env.ref('base.user_demo')
with self.assertRaises(Exception):
self.Patient.with_user(other_user).create({'name': 'Test'})
setUpClassvssetUp: UsesetUpClass(Odoo 15+) para dados de teste compartilhados. Ele é executado uma vez por classe e é significativamente mais rápido quesetUp, que reinicializa para cada método de teste individual.
Exemplo 2: Executar Testes via CLI
# Run all tests for a specific module
./odoo-bin --test-enable --stop-after-init -d my_database -u hospital_management
# Run only tests tagged with a specific tag
./odoo-bin --test-enable --stop-after-init -d my_database \
--test-tags hospital_management
# Run a specific test class
./odoo-bin --test-enable --stop-after-init -d my_database \
--test-tags /hospital_management:TestHospitalPatient
Exemplo 3: HttpCase para Teste de Controlador
from odoo.tests.common import HttpCase
from odoo.tests import tagged
@tagged('post_install', '-at_install')
class TestPatientController(HttpCase):
def test_patient_page_authenticated(self):
# Authenticate as a user, not with hardcoded password
self.authenticate(self.env.user.login, self.env.user.login)
resp = self.url_open('/hospital/patients')
self.assertEqual(resp.status_code, 200)
def test_patient_page_redirects_unauthenticated(self):
# No authenticate() call = public/anonymous user
resp = self.url_open('/hospital/patients', allow_redirects=False)
self.assertIn(resp.status_code, [301, 302, 403])
Melhores Práticas
- ✅ Fazer: Use
setUpClass()comcls.envem vez desetUp()— é dramaticamente mais rápido para grandes suítes de testes. - ✅ Fazer: Use
@tagged('post_install', '-at_install')para executar testes após todos os módulos serem instalados. - ✅ Fazer: Teste tanto o caminho feliz quanto as condições de erro (
ValidationError,AccessError,UserError). - ✅ Fazer: Use
self.with_user(user)para testar o controle de acesso sem chamarsudo(). - ❌ Não fazer: Use um banco de dados de produção para testes — sempre use um banco de dados de teste dedicado.
- ❌ Não fazer: Confie na ordem de execução dos testes — cada teste
TransactionCaseé revertido isoladamente. - ❌ Não fazer: Codifique senhas em
HttpCase.authenticate()— useself.env.user.loginou um usuário fixture.
Limitações
- Testes de tour em JavaScript exigem um navegador em execução (via
phantomjsouChrome headless) e um servidor Odoo ativo — não abordado em profundidade aqui.
…
Perguntas frequentes
Qual a diferença entre TransactionCase e HttpCase?
TransactionCase testa a lógica interna do sistema (como cálculos ou regras de negócio), enquanto HttpCase testa como o sistema responde a requisições pela internet (como acessar uma página).
Posso usar isso em qualquer versão do Odoo?
A ferramenta é baseada no framework de testes do Odoo, que existe em várias versões. Os exemplos mostram padrões mais recentes, mas o conceito é aplicável.
O que são 'testes em CI'?
CI significa Integração Contínua. São testes que rodam automaticamente sempre que o código é atualizado, para pegar erros rapidamente.
Detalhes
Descrição original do autor
Write and run Odoo automated tests using TransactionCase, HttpCase, and browser tour tests. Covers test data setup, mocking, and CI integration.
Popularidade
- Estrelas no GitHub
- 48 mil
- Posição no ranking
- #3720
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
00-andruia-consultant
Ajuda seu agente a iniciar ou melhorar projetos de IA. Ele analisa código, sugere ferramentas e cria planos de ação em espanhol.
sickn33/agentic-awesome-skills
007
Faz seu agente realizar auditorias de segurança e modelagem de ameaças. É útil para proteger projetos contra ataques e vulnerabilidades.
sickn33/agentic-awesome-skills
10-andruia-skill-smith
Ajuda seu agente a criar ou melhorar ferramentas de IA. Ele define como as ferramentas funcionam, escreve a documentação e valida a estrutura.
sickn33/agentic-awesome-skills
20-andruia-niche-intelligence
Faz seu agente criar um resumo sobre um setor específico. É útil para entender o contexto, regras, padrões de uso e riscos de um projeto, usando fontes confiáveis.
sickn33/agentic-awesome-skills
Skills parecidas
cpp-testing
Faz seu agente escrever e melhorar testes para código C++. Ajuda a configurar ferramentas de teste e a corrigir erros.
affaan-m/ECC
csharp-testing
Ajuda seu agente a criar testes para código C# e .NET. Ele usa as melhores práticas para garantir que os testes sejam eficientes e confiáveis.
affaan-m/ECC
django-tdd
Faz seu agente aplicar estratégias de teste para Django com pytest-django e TDD. É útil para escrever testes robustos e garantir a qualidade do código, especialmente para APIs DRF.
affaan-m/ECC