Behave

pip install tracera-behave

Python ≥ 3.11 और Behave ≥ 1.2.6 आवश्यक (देखें ऑटोटेस्ट एडेप्टर)। tracera-behave on PyPI।

Behave environment.py में हुक जोड़ें (आमतौर पर features/ के तहत):

from tracera_behave.environment import (
    after_all,
    after_scenario,
    after_step,
    before_all,
    before_scenario,
    before_step,
)

इतना import काफ़ी है — Behave environment.py से हुक लोड करता है।

चलाना: behave features।

पर्यावरण चर और रन मोड: ऑटोटेस्ट अडैप्टर।

testCaseId और autotestName बाँधना

Scenario पर टैग लगाना बेहतर है। स्टेप कोड से tracera.test_case भी कॉल कर सकते हैं।

@tracera.id:42
@tracera.name:e2e/login
Scenario: Login
  Given I open the login page

यदि @tracera.name न लिखा हो, तो autotestName Scenario नाम का मान लेता है।

Skip

मानक Behave skip (context.scenario.skip(reason))। Skip reason परिणाम में comment के रूप में जुड़ता है।

from behave import when

@when("env is not ready")
def not_ready(context):
    context.scenario.skip("env not ready — https://example.com/skip")

स्टेप्स

हर Gherkin स्टेप परिणाम के टेस्ट सेक्शन में रिकॉर्ड होता है (शीर्षक = स्टेप नाम, बिना Given/When/Then कीवर्ड)। नेस्ट के लिए tracera.step(title, body), @tracera.step("…"), या with / async with tracera.step("…")::

from behave import when
from tracera_behave import tracera

@when("I add to cart")
def add_to_cart(context):
    with tracera.step("nested leaf"):
        pass

before_scenario में tracera.step परिणाम के सेटअप में जाता है; Gherkin स्टेप्स टेस्ट में; after_scenario में tracera.step परिणाम के टीयरडाउन में। सूट-स्तरीय हुक्स (before_all / before_feature) रिपोर्ट नहीं होते।

कमेंट, एरर और अटैचमेंट

कमेंट, एरर और अटैचमेंट: ऑटोटेस्ट अडैप्टर।

from behave import when
from tracera_behave import tracera

@when("I open the login page")
def open_login(context):
    tracera.comment("landed on login")
    tracera.attachment(
        file_name="suite-log.txt",
        mime_type="text/plain",
        data=b"finished login flow",
    )

@when("I note the result")
def note_result(context):
    tracera.comment("result-level note")
    tracera.error("result-level error text")

पैरामीटराइज़्ड टेस्ट

@tracera.id (वैकल्पिक @tracera.name) Scenario Outline पर लगाएँ (Examples की हर पंक्ति पर नहीं)। हर पंक्ति अपना result बनाती है, लेकिन सभी उसी एक case से बँधे होते हैं:

यदि @tracera.name न लिखा हो, तो प्रत्येक टेस्ट का autotestName वह Scenario नाम का मान लेता है जिसमें उसकी Examples पंक्ति के <…> भर दिए गए हों। टैग स्थिर रखें; बदलता पाठ Outline शीर्षक में <…> से लिखें।

@tracera.id:42
@tracera.name:e2e/login
Scenario Outline: Login row
  Given I open "<path>"

  Examples:
    | path       |
    | /login     |
    | /login/sso |

यहाँ /login और /login/sso दोनों case 42 से बँधते हैं।

अगर हर पंक्ति का अलग case चाहिए — id टेबल में रखें और स्टेप से tracera.test_case कॉल करें:

Scenario Outline: Login row
  Given I bind case <case_id> as "<name>"
  And I open "<path>"

  Examples:
    | case_id | name           | path       |
    | 42      | e2e/login-ok   | /login     |
    | 43      | e2e/login-sso  | /login/sso |
from behave import given
from tracera_behave import tracera

@given('I bind case {case_id:d} as "{name}"')
def bind_case(context, case_id, name):
    tracera.test_case(case_id, name)