Pular para o conteúdo
Skillpedia
Testes48 mil · #3720

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

https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/odoo-automated-tests/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/odoo-automated-tests/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
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-tests

Ou 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.md
Conteú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

  1. Ativar: Mencione @odoo-automated-tests e descreva o recurso a ser testado.
  2. Gerar: Obtenha o código completo da classe de teste com configuração, limpeza e asserções.
  3. Executar: Obtenha o comando odoo exato 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'})

setUpClass vs setUp: Use setUpClass (Odoo 15+) para dados de teste compartilhados. Ele é executado uma vez por classe e é significativamente mais rápido que setUp, 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() com cls.env em vez de setUp() — é 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 chamar sudo().
  • ❌ 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() — use self.env.user.login ou um usuário fixture.

Limitações

  • Testes de tour em JavaScript exigem um navegador em execução (via phantomjs ou Chrome 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.

repo: sickn33/agentic-awesome-skills

Popularidade

Estrelas no GitHub
48 mil
Posição no ranking
#3720
Licença
MIT
Atualizada em
15/10/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas