allure-framework / allure-framework/allure-python
Step tree seems not correct in multithreaded testing
Nessuno ha ancora preso questa issue.
- Lingua principale
- Python
- Stelle
- 815
- Fork
- 260
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Descrizione
I'm submitting a ...
- bug report
- feature request
- support request => Please do not submit support request here, see note at the top of this template.
What is the current behavior?
When Thead#entrance spawned Thread#node, Thread#node spawned Thread#session, step tree of allure seems incorrect?
If the current behavior is a bug, please provide the steps to reproduce and if possible a minimal demo of the problem
from concurrent.futures import ThreadPoolExecutor
import allure
def session_on_node(node_id, session):
with allure.step(f"Session#{session} on node {node_id}"):
pass
def parallel_task_for_specific_node(node_id):
with allure.step(f"Parallel task for node {node_id}"):
with ThreadPoolExecutor() as executor:
for session in range(5):
executor.submit(session_on_node, node_id, session)
executor.shutdown(wait=True)
def test_multithreaded():
with allure.step("Entrance"):
with ThreadPoolExecutor() as executor:
for node_id in range(3):
executor.submit(parallel_task_for_specific_node, node_id)
executor.shutdown(wait=True)
What is the expected behavior?
step tree should be like this?
Thread#entrance
- Thread#node
- Thread#session
- Thread#session
- Thread#session
- Thread#node
- Thread#session
- Thread#session
- Thread#session
What is the motivation / use case for changing the behavior?
There is a service combined of multiple nodes. Every node could handle several sessions from client.
Sometimes, parallel testing is needed: Multi sessions for multi nodes, which means main thread is to spawn threads of different node, thread of a single node is to spawn different threads of multiple session, and finally we collect every step and organize them in a friendly tree.
Please tell us about your environment:
- Allure version: 2.32.0
- Test framework: pytest@7.4.4
- Allure adaptor: allure-pytest@2.13.5
Other information
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia eseguendo la riproduzione test_multithreaded fornita con Python, pytest 7.4.4 e allure-pytest 2.13.5, concentrandoti su allure.step e sulle chiamate annidate a ThreadPoolExecutor. Confronta l’albero degli step generato con la struttura attesa Entrance → node → session; il lavoro è completato quando tutti gli step node e session generati sono raggruppati sotto il rispettivo parent di origine.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- python
- Ambito
- testing
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 45/100