DEV Community

Douglas Cardoso
Douglas Cardoso

Posted on

Conheça o parâmetro "result" do Guará Python 🐍

O Page Object Model (POM) clássico resolveu a organização dos seletores, mas criou um novo problema: testes inflados e cheios de microações repetitivas.

Se você automatiza testes em Python, provavelmente já viu arquivos de teste parecidos com isso:

O padrão antigo focado em botões e cliques

page.click_button_sign_in()
page.fill_input_email("user@email")
page.fill_input_password("123456")
page.click_submit_button()
Enter fullscreen mode Exit fullscreen mode

Qual é o problema aqui? O seu teste está conversando com a interface gráfica (cliques e inputs) em vez de conversar com a intenção do negócio. Se o layout do site mudar, dezenas de testes quebram em cascata.

🚀 A evolução: Page Transactions

Em vez de mapear botões isolados, o padrão Page Transactions (implementado nativamente no framework Guará) agrupa interações em transações completas e fluentes. O teste passa a ler-se como uma jornada real do usuário:

A evolução focada na jornada do negócio

(
  app.given(UserInMainPage)
  .when(UserLogin, username="user", secret="123")
  .then(it.Contains, "dashboard")
)
Enter fullscreen mode Exit fullscreen mode

No canal do Youtube 🎥 @testrockchannel, eu mostro na prática como refatorar seu projeto para esta arquitetura fluente e declarativa, sem quebrar nenhuma linha do seu código legado.

🎥 Dá o play no tutorial completo:

Para ver o passo a passo da implementação e entender como aplicar isso no seu dia a dia, assiste aí:

(Se o player não carregar por aqui, sem problemas: é só clicar neste link para ver direto no YouTube).

O que achou dessa estrutura? Já passou raiva tentando sincronizar BDD com código antes? Deixa seu comentário aqui embaixo para a gente trocar uma ideia!

Lembrando que tem vídeo novo sobre isso toda terça-feira, às 12h (meio-dia). Bora codar! 🔥

Top comments (0)