Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Allure step placeholder fails when accessing dataclass attribute `data.name`

Aperta
#896 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
3/5
Tempo stimato
1-2 giorni
Idoneità per principianti
45/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Ferma
Stack tecnologico
python
Ambito
testing

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
  • data is 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

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di allure-framework/allure-python

Tutte le issue di allure-framework/allure-python

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.