How does pytest xfail marker evaluation work across the test lifecycle?