Allure step placeholder fails when accessing dataclass attribute `data.name`
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 45/100
Direzione di ricerca
Inizia dall’utilizzo in step_placeholder.rst e riproduci il malfunzionamento usando l’esempio di dataclass con Python 3.12 e allure-pytest 2.15.2. Traccia il rendering del segnaposto step-title e aggiungi la copertura per l’accesso agli attributi di dataclass; il lavoro è completato quando lo step visualizza il nome risolto senza sollevare AttributeError.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
With the usage provided in step_placeholder.rst, I used Allure step placeholders to reference a property on a Python dataclass passed as a function argument. Using data.name in the step title raises an AttributeError during step rendering.
Expected behavior
Allure should resolve data.name and display the value of the name attribute in the step title like Create opportunity: Auto QA Example
Actual behavior
Allure raises an exception before the step executes: AttributeError: 'str' object has no attribute 'get('name)'
MWE of dataclass used
@dataclass
class OpportunityData:
"""Data class for opportunity test data."""
name: str
expected_revenue: str
email: Optional[str] = None
phone: Optional[str] = None
state: Optional[str] = None
street: Optional[str] = None
zip_code: Optional[str] = None
Factory function for Opportunity creation
def create_opportunity_data() -> OpportunityData:
"""Factory function to create OpportunityData for tests."""
data = OpportunityData(
name=f"Auto QA {fake.company()}",
expected_revenue=_generate_expected_revenue(),
email = fake.email()
phone = fake.phone_number()
street = fake.street_address()
zip_code = fake.zipcode()
state=fake.random_element(STATE_OPTIONS),
)
return data
Test Opportunity file
@allure.title("Test opportunity creation with all main fields")
@allure.testcase("CRM-002")
@pytest.mark.regression
def test_opportunity_creation_full(opportunity_page: OpportunityPage, app_instance: App) -> None:
# ARRANGE
data = create_opportunity_data(full=True, opportunity_type="CRM Multi-Year")
# ACT
opportunity_page.create_opportunity(data)
# ASSERT
opportunity_page.verify_opportunity_saved(data.name)
Opportunity Page class
@allure.step("Create opportunity: {data.name}")
def create_opportunity(self, data: "OpportunityData", base_url: str) -> Self:
"""High-level method to create an opportunity with provided data."""
# Fill main form fields
self.fill_opportunity_name(data.name)
self.fill_expected_revenue(data.expected_revenue)
Call stack
app_instance = <src.app.App object at 0x7f9f3034f8c0>
@allure.title("Test opportunity creation with minimal fields")
@allure.testcase("CRM-001")
@pytest.mark.smoke
def test_opportunity_creation_flow(opportunity_page: OpportunityPage, app_instance: App) -> None:
# ARRANGE
data = create_opportunity_data(opportunity_type="Monitoring")
# ACT
> opportunity_page.create_opportunity(data, app_instance.base_url)
E AttributeError: 'str' object has no attribute 'get('name)'
Notes
datais a dataclass instance, not a dict.- Attribute access works inside the function body.
- The error occurs during Allure step title formatting.
Environment
- Python 3.12
- allure-pytest==2.15.2
- pytest==8.4.2
- pytest-playwright==0.7.2
- mypy==1.19.0
- mypy-extensions==1.1.0
Does allure step placeholders accept only strings?
- Lingua principale
- Python
- Stelle
- 817
- Fork
- 262
- Merge medio
- 3h 20m
- PR unite (30g)
- 3
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi 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.
Altre issue di allure-framework/allure-python
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 84/100
-
Added CategoriesAperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 55/100
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 58/100
allure-framework/allure-python#918 · 1 reazione ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
allure-framework/allure-python#903 · 1 commento ·
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 42/100
Tutte le issue di allure-framework/allure-python
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
NousResearch/hermes-plugin-claude-subscription-directsdk#94 ·
I maintainer di solito rispondono entro 1 giorno
-
namespace operations
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
EclipseFdn/open-vsx.org#13702 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
modelscope/ms-swift#10287 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
modelscope/FunASR#3757 ·
I maintainer di solito rispondono entro 1 giorno