Cucumber-js: Esboço do cenário com vários exemplos

Criado em 6 jun. 2018  ·  16Comentários  ·  Fonte: cucumber/cucumber-js

Oi,
em primeiro lugar, muito obrigado por ter essa implementação JS Gherkin.

Meu problema:
Eu tenho o esboço do cenário com alguns exemplos. Este cenário contém a etapa de obtenção de endpoint com algum url e eu gostaria de ter outros exemplos neste esboço de cenário com parâmetros de url.
Em seguida, quero executar o cenário de acordo com os primeiros exemplos multiplicados por outros exemplos. Portanto, se os primeiros exemplos tiverem, por exemplo, 4 linhas e os segundos 4 linhas = 4 x 4 = 16 execuções.

Basicamente o mesmo que
https://github.com/Behat/Behat/issues/1082

Comentários muito úteis

https://github.com/Behat/Behat/issues/1082 é que apenas a última tabela de exemplos é executada. Eu considero isso separado da multiplicação de tabelas de exemplo.

Preenchendo um exemplo. Você está perguntando o seguinte:

Scenario Outline:
  Given <a> and <b>

  Examples:
    | a  |
    | a1 |
    | a2 |
    | a3 |
    | a4 |

  Examples:
    | b  |
    | b1 |
    | b2 |
    | b3 |
    | b4 |

Onde ele executa 16 cenários com as combinações a1 / b1, a1 / b2, a1 / b3, a1 / b4, a2 / b1, etc. Se deveríamos oferecer suporte a tal coisa, acho que precisamos de uma palavra-chave diferente em vez de sobrecarregar Exemplos como esta configuração atualmente se torna 8 cenários onde no primeiro 4 b é indefinido e no segundo 4 a é indefinido.

Todos 16 comentários

Estou surpreso que ainda não funcione. Definitivamente funciona em Java e Ruby ....

Eu concordo que deve ser implementado.

https://github.com/Behat/Behat/issues/1082 é que apenas a última tabela de exemplos é executada. Eu considero isso separado da multiplicação de tabelas de exemplo.

Preenchendo um exemplo. Você está perguntando o seguinte:

Scenario Outline:
  Given <a> and <b>

  Examples:
    | a  |
    | a1 |
    | a2 |
    | a3 |
    | a4 |

  Examples:
    | b  |
    | b1 |
    | b2 |
    | b3 |
    | b4 |

Onde ele executa 16 cenários com as combinações a1 / b1, a1 / b2, a1 / b3, a1 / b4, a2 / b1, etc. Se deveríamos oferecer suporte a tal coisa, acho que precisamos de uma palavra-chave diferente em vez de sobrecarregar Exemplos como esta configuração atualmente se torna 8 cenários onde no primeiro 4 b é indefinido e no segundo 4 a é indefinido.

@aslakhellesoy está multiplicando tabelas de exemplo trabalhando em java / ruby? Cucmber-js lida corretamente com várias tabelas de exemplos para um único esboço de cenário.

Pelo que retirei do tíquete do Behat, o que eles querem alcançar não é multiplicar a tabela, mas sim agrupar exemplos com base no que eles expressam:

    Examples: of ordinary Latin character inputs
      | input |
      | a     |
      | z     |
      | 0     |

    Examples: of Unicode inputs
      | input  |
      | U+0046 |
      | U+0058 |

    Examples: of invalid inputs
      | input  |
      | <      |
      | </     |

Em vez de combinar:

    Examples: Usernames
         | username   |
         | admin      |
         | user       |
         | maintainer |
         | moderator  |

    Examples: Passwords
         | password |
         | valid    |
         | invalid  |

Eu posso estar errado embora

Eu li errado "várias" tabelas de exemplo, o que funciona. Multiplicar tabelas de exemplo (multiplicação de matrizes?) Não funciona. Acho que seria um pouco difícil para as pessoas entenderem.

Você já pensou em gerar uma mesa menor em pares ?

Desculpe enganá-lo postando um tíquete do Behat. Preciso exatamente do que charlierudolph escreve, mesmo com palavras-chave diferentes.

THX.

@znevrly Concordo que multiplicar tudo seria confuso quando comparado com os exemplos atuais. Acho que os pares é a solução ideal, pois você pode restringir a um conjunto representativo de casos de teste. @aslakhellesoy , você acha que queremos construir algo parecido com maxixe? (se pudermos determinar uma boa interface)

Não acho que devamos construir em pares no Gherkin - isso seria recurso creep. Acho melhor usar uma ferramenta autônoma para gerar uma tabela e, em seguida, colá-la em um arquivo de recurso.

Isso não parece muito confortável. Alguma ideia? :)

Alguma ideia sobre o quê?

Ter alguma palavra-chave para alcançar o comportamento descrito (multiplicação de tabelas de exemplo ou multiplicação de matrizes) sem a necessidade de gerar tabelas manualmente.

Você percebeu que só precisa executar a ferramenta de pares uma vez para gerar uma tabela e colar em um esboço de cenário? Não tenho certeza do que o deixa desconfortável com isso.

Mas tenho dezenas de arquivos de recursos com muitos cenários. No caso de uma "segunda" tabela de exemplos seriam apenas várias copias e cola e fica bem claro quando é feito ou não. E caso haja uma linha extra na "segunda" tabela de exemplo, não preciso gerar novamente todas as tabelas mescladas.

Mais sobre as tabelas geradas não é muito claro se existem todas as combinações possíveis ou não. :(

Podemos adicionar uma API de pré-processador Gherkin em algum momento. Quando o fizermos, acho que a funcionalidade que você está pedindo deve ser implementada usando essa API. Não é uma prioridade no momento, então, se for urgente para você, sugiro que você mesmo gere os arquivos do Gherkin.

como vou usar isso em exemplos - e-mail deve estar no formato de "first_name. [email protected] "

É possível escolher apenas um cenário da tabela de exemplo? vamos dizer que eu tenho

A | B | C |
| Pacote | 'HD' | 'SHP' |
| PZ | 'HD' | 'SHP' |

Se a partir de um arquivo de recurso (digamos helloWorld.feature) estou chamando outro arquivo de recurso (Print.feature) que tem o esboço do cenário com a tabela acima, então é possível escolher um cenário para executar a partir do primeiro arquivo de recurso?

Esta página foi útil?
0 / 5 - 0 avaliações