Adicionando Tags em Cenários Gherkin


Índice

  1. Setup Inicial
    1.1 Clone o Projeto
  1. Filtrando Testes com Tags
    2.1 Exemplo de Implementação de Tags
  1. Implementação
  1. Executando Testes
    4.1 Executando Testes pela Tag
    4.2 Executando mais de uma Tag
  1. Repositório
  1. Agradecimentos
  1. Bibliografia


1. Setup Inicial


1.1 Clone o Projeto

Continuaremos a partir de um projeto de automação anterior “Gherkin com Python e Pytest-Bdd”.
Certifique-se de clonar a “branch” correta para que possamos começar: “tutorial/gherkin-pytest-bdd”.

Depois de cloná-lo, verifique no VSCode se você clonou a branch correta.


2. Filtrando Testes com Tags

As tags deveriam ser aplicadas nos arquivos gherkin, elas podem ser aplicadas em:

  • Features.
  • Scenarios.
  • Scenario Outlines.


2.1 Exemplo de Implementação de Tags

Uma “feature” ou “scenario” podem ter um número ilimitado de tags.

@web @basic-search
Feature: DuckDuckGo Web Browsing

A mesma tag também pode ser utilizada por mais de uma “feature” ou “scenario”.

@web
Feature: DuckDuckGo Web Browsing
 
@web
Scenario: Basic DuckDuckGo Result Title

Tags adicionadas em “features” afetam os “scenarios” dentro das “features”.

@web
Feature: DuckDuckGo Web Browsing
    As a web surfer,
    I want to find information online,
    So I can learn new things and get tasks done.
 
    Background:
        Given the DuckDuckGo home page is displayed
 
    Scenario: Basic DuckDuckGo Result Title
        When the user searches for "panda"
        Then results title contains "panda"


3. Implementação

web.feature”:

@web
Feature: DuckDuckGo Web Browsing
    As a web surfer,
    I want to find information online,
    So I can learn new things and get tasks done.
 
    Background:
        Given the DuckDuckGo home page is displayed
   
    @basic-search
    Scenario: Basic DuckDuckGo Result Title
        When the user searches for "panda"
        Then results title contains "panda"
 
    @scenario-outline
    Scenario Outline: Basic DuckDuckGo Search
        When the user searches for <name>
        Then results are shown for <found_animal>
 
    Examples: Animals
        | name       | found_animal |
        | panda      | panda        |
        | python     | python       |
        | polar bear | polar bear   |
 
    @basic-search @independence-search
    Scenario: Lengthy DuckDuckGo Search
        When the user searches for the phrase:
            """
            When in the Course of human events, it becomes necessary for one people
            to dissolve the political bands which have connected them with another,
            and to assume among the powers of the earth, the separate and equal
            station to which the Laws of Nature and of Nature's God entitle them,
            a decent respect to the opinions of mankind requires that they should
            declare the causes which impel them to the separation.
            """
        Then one of the results contains "Declaration of Independence"


4. Executando Testes


4.1 Executando Testes pela Tag

Abra o “Prompt de Comando” na raiz do seu projeto e escreva o comando abaixo.
Lembre-se de remover o símbolo do arroba (@) que vem antes do nome da tag, também lembre-se de colocar o nome da tag entre aspas duplas.

pipenv run python -m pytest -k "web"

Após executá-lo, o teste talvez lance um aviso.

PytestUnknownMarkWarning: Unknown pytest.mark.xxx - is this a typo?

Caso o aviso acima seja exibido crie o arquivo “pytest.ini” dentro da raiz do seu projeto e escreva as tags nele.

pytest.ini”:

[pytest]
markers =
    web: marks tests as web tests
    basic-search
    scenario-outline
    independence-search

Execute os testes novamente e todos os cenários sob a tag @web serão executados.


4.2 Executando mais de uma Tag

Você pode utilizar operadores lógicos python (and, or, not) para especificar qual tag deveria ser chamada.

  • And (E).

Executa todos os testes que possuem ambas as tags “basic-search” e “independence-search”.

pipenv run python -m pytest -k "basic-search and independence-search"

  • Or (Ou).

Executa todos os testes que possuem uma tag ou outra: “scenario-outline” ou “independence-search”.

pipenv run python -m pytest -k "scenario-outline or independence-search"

  • Not (Não).

Executa os testes que possuem a tag “basic-search” e não executa os testes tagueados com “scenario-outline”.

pipenv run python -m pytest -k "basic-search and not scenario-outline"


5. Repositório

Criei uma branch nova para esse tutorial chamada “tutorial/gherkin-tags”, clique no link abaixo para visualizar:
https://github.com/LuizGustavoR/intro-selenium-py/tree/tutorial/gherkin-tags

Fim.


6. Agradecimentos


7. Bibliografia

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *