Pytest
pip install tracera-pytest
Python ≥ 3.11 और pytest ≥ 8 आवश्यक (देखें ऑटोटेस्ट एडेप्टर)। tracera-pytest PyPI पर।
एनवायरनमेंट, रन मोड और रीट्राई: ऑटोटेस्ट एडेप्टर।
रीट्राई Env कुंजी: PYTEST_RETRY।
testCaseId और autotestName बाँधना
मानक pytest API हमेशा की तरह इम्पोर्ट करें, और tracera_pytest से tracera और id।
घोषणा पर (पसंदीदा — टेस्ट जल्दी skip हो जाए तो भी बाइंड चलता है):
import pytest
from tracera_pytest import id as tracera_id
@tracera_id(42, "e2e/login")
def test_login():
assert True
टेस्ट के अंदर (अगर @tracera.id पहले से केस बाँध चुके हों तो वैकल्पिक):
from tracera_pytest import tracera
def test_login():
tracera.test_case(42, "e2e/login")
assert True
Skip
मानक pytest skip इस्तेमाल करें (pytest.skip, @pytest.mark.skip, …)। Skip reason परिणाम में comment के रूप में जुड़ता है।
import os
import pytest
from tracera_pytest import id as tracera_id
@tracera_id(42, "e2e/login")
def test_login():
if not os.environ.get("READY"):
pytest.skip("env not ready")
स्टेप्स
tracera.step(title, body), @tracera.step("…"), with tracera.step("…"):, या async with tracera.step("…"): इस्तेमाल करें (async def पर @tracera.step / await tracera.step(…) भी)। @tracera.step("add {item}") डेकोरेटर में {item} उसी फ़ंक्शन के item आर्गुमेंट से प्रतिस्थापित होता है। function-scoped fixture के अंदर के स्टेप्स परिणाम के सेटअप / टीयरडाउन में जाते हैं; टेस्ट के अंदर के स्टेप्स परिणाम की टेस्ट सेक्शन में। सूट-स्तरीय हुक्स रिपोर्ट नहीं होते।
import pytest
from tracera_pytest import tracera
@pytest.fixture(autouse=True)
def open_shop():
with tracera.step("open shop"):
pass
yield
with tracera.step("cleanup"):
pass
@tracera.step("add {item}")
def add_to_cart(item: str):
pass
def test_checkout():
tracera.test_case(10, "e2e/checkout")
add_to_cart("sku-1") # → step "add sku-1"
कमेंट, एरर और अटैचमेंट
कमेंट, एरर और अटैचमेंट: ऑटोटेस्ट अडैप्टर।
from tracera_pytest import tracera
def test_login():
tracera.test_case(42, "e2e/login")
tracera.comment("result-level note")
tracera.error("result-level error text")
with tracera.step("open login"):
tracera.comment("landed on login")
tracera.attachment(
file_name="suite-log.txt",
mime_type="text/plain",
data=b"finished login flow",
)
पैरामीटराइज़्ड टेस्ट
@tracera.id डेकोरेटर का दूसरा आर्ग्युमेंट autotest नाम है। उसमें {arg_name} / {param_id} प्लेसहोल्डर रख सकते हैं; {arg_name} टेस्ट फ़ंक्शन के आर्ग्युमेंट से मैच करने चाहिए, और हर @pytest.mark.parametrize पंक्ति उन्हें उसी पंक्ति के मानों से भरती है ({param_id} तब जब pytest पैरामीटर id दे)। नीचे उदाहरण में केस 42 के दो results बनते हैं, autotest नाम login as ok और login as sso:
import pytest
from tracera_pytest import id as tracera_id
@tracera_id(42, "login as {login}")
@pytest.mark.parametrize("login", ["ok", "sso"])
def test_login(login):
assert login
या जब केस id भी बदलता हो तो टेस्ट के अंदर बाँधें:
import pytest
from tracera_pytest import tracera
@pytest.mark.parametrize(
"case_id,name",
[
(42, "e2e/login-ok"),
(43, "e2e/login-sso"),
],
)
def test_login_row(case_id, name):
tracera.test_case(case_id, name)
with tracera.step("open"):
pass