import subprocess
import re
def test_pytest_xdist_parallel_execution():
# Run pytest with 3 parallel workers
result = subprocess.run(['pytest', '-n', '3', 'test_sample.py', '--maxfail=1', '--disable-warnings', '-q'], capture_output=True, text=True)
output = result.stdout
# Check that pytest exited with code 0 (all tests passed)
assert result.returncode == 0, f"Tests failed with output:\n{output}"
# Check pytest-xdist output for parallel workers
# The output usually contains lines like 'gw0', 'gw1', 'gw2' indicating workers
workers_found = re.findall(r'gw\d+', output)
assert len(set(workers_found)) >= 3, "Less than 3 parallel workers detected in output"
This test runs the pytest command with the -n 3 option to execute tests in 3 parallel workers using pytest-xdist.
We use subprocess.run to execute the command and capture the output.
First, we assert that the return code is 0, meaning all tests passed.
Then, we check the output for worker identifiers like gw0, gw1, and gw2 which pytest-xdist prints to show parallel execution.
This confirms that tests ran in parallel.
Using --maxfail=1 and --disable-warnings keeps output clean and stops early on failure.