Run a user pytest file as a testium item, surfacing each collected test as a child with its own PASS/FAIL/SKIP, duration and failure message. Mirrors the unittest item but runs pytest in a subprocess on the host interpreter (bins.python_bin(), like py_func/lua_func) so it works across every packaging channel. A stdlib-only pytest plugin streams collected node-ids and per-test results over stdout via sentinels; the parent parses them live. Params: test_file, test_method. stop_on_failure maps to -x; disabled children are reported NORUN without running. Wiring: TYPE_PYTEST / TYPE_PYTEST_STEP constants, test_init registration, self-loading branch in test_set, GUI tree icon. Schema/LSP pick it up automatically from the declarative PARAMS. Validation: test/validation/items/pytest/ (validation venv now installs pytest). WIP: paused mid-feature (DESIGN.md documented; manual section pending). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
29 lines
506 B
Python
29 lines
506 B
Python
import pytest
|
|
|
|
|
|
def test_01_pass():
|
|
''' Test 01 passes '''
|
|
assert 1 + 1 == 2
|
|
|
|
|
|
def test_02_pass():
|
|
''' Test 02 passes '''
|
|
assert "a" in "abc"
|
|
|
|
|
|
def test_03_fail():
|
|
''' Test 03 fails on purpose '''
|
|
assert 1 == 2, "deliberate failure"
|
|
|
|
|
|
@pytest.mark.skip(reason="skipped on purpose")
|
|
def test_04_skip():
|
|
''' Test 04 is skipped '''
|
|
assert False
|
|
|
|
|
|
@pytest.mark.parametrize("n", [1, 2])
|
|
def test_05_param(n):
|
|
''' Test 05 is parametrised, both cases pass '''
|
|
assert n < 3
|