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)