Ce dépôt concerne les rendus de Jonh Doe.
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 |
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;
}
}
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}"
[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] ------------------------------------------------------------------------
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] ------------------------------------------------------------------------
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