Skip to content

IUT-Blagnac/r5-a-08-qualdev-Kilianspore

 
 

Repository files navigation

R5.A.08 — Dépôt pour les TPs

Ce dépôt concerne les rendus de Jonh Doe.

TP1 (réalisé avec Wail Gana)

Code de is_it_friday.feature
Feature: Is it Friday yet?
  Everybody wants to know when it's Friday
    Scenario Outline: Tests
        Given today is "<day>"
        When I ask whether it's Friday yet
        Then I should be told "<answer>"
        Examples:
            | day             | answer |
            | Friday          | TGIF  |
            | Sunday          | Nope  |
            | anything else   | Nope  |
width:80%
Figure 1. Les tests du tp1 passent

TP2 (réalisé avec Wail Gana)

Code de Order.java
package dojo;
import java.util.ArrayList;
import java.util.List;
class Order {
    String owner;
    String target;
    List<String> drinks = new ArrayList<>();
    public void declareOwner(String owner) {
        this.owner = owner;
    }
    public void declareTarget(String target) {
        this.target = target;
    }
    public List<String> getDrinks() {
        return drinks;
    }
}
width:80%
Figure 2. Les tests du TP2 passent

TP3 (réalisé avec Wail Gana)

Lors de mon stage de deuxième année, j’ai développé une application en python. Étant donné que j’ai aussi du développer un site et le lier à une base de données, je n’ai pas eu le temps d’implementer des tests très poussés, c’est donc pour ça que j’ai fait le choix de repartir sur une interface python pour voir et comprendre comment réaliser des tests, avec python.

Code de compteur.feature
Feature: Compteur
  Tester les fonctionnalités d'un compteur.

  Scenario Outline: Augmenter ou réduire le compteur
    Given l'application est lancée
    When je clique sur "<action>"
    Then le compteur doit afficher "Compteur : <valeur_attendue>"

    Examples:
      | action       | valeur_attendue |
      | Augmenter    | 1               |
      | Réduire      | -1              |

  Scenario Outline: Tester les limites
    Given l'application est lancée
    When je saisis "<valeur_max>" dans "Valeur maximale :"
    And je saisis "<valeur_min>" dans "Valeur minimale :"
    And je clique sur "Définir les limites"
    And je clique sur "<action>"
    And je clique sur "<action>"
    Then le compteur doit afficher "Compteur : <valeur_attendue>"

    Examples:
      | valeur_max | valeur_min | action       | valeur_attendue |
      | 1          | -1         | Augmenter    | 1               |
      | 1          | -1         | Réduire      | -1              |

  Scenario Outline: Réinitialiser le compteur
    Given l'application est lancée
    When je clique sur "<action>"
    And je clique sur "Réinitialiser"
    Then le compteur doit afficher "Compteur : 0"

    Examples:
      | action    |
      | Augmenter |
      | Réduire   |
Implémentations des tests
@given("l'application est lancée")
def step_given_application_launched(context):
    context.app = StartPage()
    context.app.update()

@when('je clique sur "{button_text}"')
def step_when_click_button(context, button_text):
    for child in context.app.winfo_children():
        if isinstance(child, tk.Button) and child.cget("text") == button_text:
            child.invoke()  # Simule un clic
            context.app.update()
            return
    raise Exception(f"Bouton {button_text} non trouvé")

@when('je saisis "{value}" dans "{label_text}"')
def step_when_enter_value_in_field(context, value, label_text):
    for child in context.app.winfo_children():
        if isinstance(child, tk.Label) and child.cget("text") == label_text:
            entry_index = context.app.winfo_children().index(child) + 1
            entry = context.app.winfo_children()[entry_index]
            if isinstance(entry, tk.Entry):
                entry.delete(0, tk.END)  # Effacer le champ
                entry.insert(0, value)   # Insérer la valeur (même vide)
                context.app.update()
                return
    raise Exception(f"Champ pour {label_text} non trouvé")

@then('le compteur doit afficher "{expected_text}"')
def step_then_verify_counter(context, expected_text):
    label_text = context.app.label.cget("text")
    assert label_text == expected_text, f"Attendu: {expected_text}, obtenu: {label_text}"
width:80%
width:80%
Figure 3. Les tests du TP3 passent

TP4 (réalisé avec Wail Gana)

Documentation minimale avec cucumber

Projet du TP1

[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
[INFO] Running hellocucumber.RunCucumberTest
[INFO] Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.525 s -- in hellocucumber.RunCucumberTest
[INFO]
[INFO] Results:
[INFO]
[INFO] Tests run: 4, Failures: 0, Errors: 0, Skipped: 0
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  4.386 s
[INFO] Finished at: 2025-01-10T16:50:26+01:00
[INFO] ------------------------------------------------------------------------

Projet du TP2

2 Scenarios (2 passed)
6 Steps (6 passed)
0m0,022s

[INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.291 s - in dojo.RunCucumberTest
[INFO]
[INFO] Results:
[INFO]
[INFO] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  3.101 s
[INFO] Finished at: 2025-01-10T16:49:19+01:00
[INFO] ------------------------------------------------------------------------

Projet du TP3

  Scenario Outline: RÚinitialiser le compteur -- @1.1   # features/compteur.feature:36
    Given l'application est lancÚe                      # features/steps/compteur_steps.py:5
    When je clique sur "Augmenter"                      # features/steps/compteur_steps.py:10
    And je clique sur "RÚinitialiser"                   # features/steps/compteur_steps.py:10
    Then le compteur doit afficher "Compteur : 0"       # features/steps/compteur_steps.py:32

  Scenario Outline: RÚinitialiser le compteur -- @1.2   # features/compteur.feature:37
    Given l'application est lancÚe                      # features/steps/compteur_steps.py:5
    When je clique sur "RÚduire"                        # features/steps/compteur_steps.py:10
    And je clique sur "RÚinitialiser"                   # features/steps/compteur_steps.py:10
    Then le compteur doit afficher "Compteur : 0"       # features/steps/compteur_steps.py:32

1 feature passed, 0 failed, 0 skipped
6 scenarios passed, 0 failed, 0 skipped
28 steps passed, 0 failed, 0 skipped, 0 undefined
Took 0m0.695s

Documentation améliorée avec cucumber

Je n’ai pas réussi à la faire fonctionner sur mon PC.

Documentation améliorée avec Cukedoctor

Projet du TP1

width:80%

Projet du TP2

width:80%

Projet du TP3

Le fichier que génère behave ne correspond à ce qu’attends Cukedoctor, je n’ai donc pas pu générer la documentation via Cukedoctor.

About

Template pour les TD de BDD

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Java 40.5%
  • Python 36.3%
  • Gherkin 23.2%