Test failures with Python 3.12 due to warnings (from pytest)
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 48/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Estancado
- Stack tecnológico
- python
- Área
- testing-qa
Línea de trabajo
Comienza por testing/test_xfail_behavior.py, especialmente por test_xfail y su filtro de advertencias de pytest, y reproduce el fallo con Python 3.12. Comprueba cómo las advertencias alteran la salida capturada por pytest; se considera terminado cuando las aserciones del comportamiento xfail pasan sin que una salida de advertencias no relacionada provoque fallos.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
While technically the "problem" is in pytest itself, I think it'd be better if the test suite would be more resilient to warnings that don't affect the result.
========================================================= test session starts =========================================================
platform linux -- Python 3.12.0b1, pytest-7.3.1, pluggy-1.0.0
cachedir: .tox/py312/.pytest_cache
rootdir: /tmp/pytest-forked
configfile: tox.ini
plugins: forked-1.6.1.dev4+gd9d05e2
collected 10 items
testing/test_boxed.py ...xx. [ 60%]
testing/test_xfail_behavior.py .F.F [100%]
============================================================== FAILURES ===============================================================
______________________________________________________ test_xfail[strict xpass] _______________________________________________________
is_crashing = False, is_strict = True, testdir = <Testdir local('/tmp/pytest-of-mgorny/pytest-2/test_xfail1')>
@pytest.mark.parametrize(
("is_crashing", "is_strict"),
(
pytest.param(True, True, id="strict xfail"),
pytest.param(False, True, id="strict xpass"),
pytest.param(True, False, id="non-strict xfail"),
pytest.param(False, False, id="non-strict xpass"),
),
)
def test_xfail(is_crashing, is_strict, testdir):
"""Test xfail/xpass/strict permutations."""
# pylint: disable=possibly-unused-variable
sig_num = signal.SIGTERM.numerator
test_func_body = (
"os.kill(os.getpid(), signal.SIGTERM)" if is_crashing else "assert True"
)
if is_crashing:
# marked xfailed and crashing, no matter strict or not
expected_letter = "x" # XFAILED
expected_lowercase = "xfailed"
expected_word = "XFAIL"
elif is_strict:
# strict and not failing as expected should cause failure
expected_letter = "F" # FAILED
expected_lowercase = "failed"
expected_word = FAILED_WORD
elif not is_strict:
# non-strict and not failing as expected should cause xpass
expected_letter = "X" # XPASS
expected_lowercase = "xpassed"
expected_word = "XPASS"
session_start_title = "*==== test session starts ====*"
loaded_pytest_plugins = "plugins: forked*"
collected_tests_num = "collected 1 item"
expected_progress = f"test_xfail.py {expected_letter!s}*"
failures_title = "*==== FAILURES ====*"
failures_test_name = "*____ test_function ____*"
failures_test_reason = "[XPASS(strict)] The process gets terminated"
short_test_summary_title = "*==== short test summary info ====*"
short_test_summary = f"{expected_word!s} test_xfail.py::test_function"
if expected_lowercase == "xpassed":
# XPASS wouldn't have the crash message from
# pytest-forked because the crash doesn't happen
short_test_summary = " ".join(
(
short_test_summary,
"The process gets terminated",
)
)
reason_string = (
f"reason: The process gets terminated; "
f"pytest-forked reason: "
f"*:*: running the test CRASHED with signal {sig_num:d}"
)
if expected_lowercase == "xfailed" and PYTEST_GTE_7_2:
short_test_summary += " - " + reason_string
total_summary_line = f"*==== 1 {expected_lowercase!s} in 0.*s* ====*"
expected_lines = (
session_start_title,
loaded_pytest_plugins,
collected_tests_num,
expected_progress,
)
if expected_word == FAILED_WORD:
# XPASS(strict)
expected_lines += (
failures_title,
failures_test_name,
failures_test_reason,
)
expected_lines += (
short_test_summary_title,
short_test_summary,
)
if expected_lowercase == "xpassed" and expected_word == FAILED_WORD:
# XPASS(strict)
expected_lines += (" " + reason_string,)
expected_lines += (total_summary_line,)
test_module = testdir.makepyfile(
f"""
import os
import signal
import pytest
# The current implementation emits RuntimeWarning.
pytestmark = pytest.mark.filterwarnings('ignore:pytest-forked xfail')
@pytest.mark.xfail(
reason='The process gets terminated',
strict={is_strict!s},
)
@pytest.mark.forked
def test_function():
{test_func_body!s}
"""
)
pytest_run_result = testdir.runpytest(test_module, "-ra")
> pytest_run_result.stdout.fnmatch_lines(expected_lines)
E Failed: fnmatch: '*==== test session starts ====*'
E with: '========================================================= test session starts ========================================================='
E nomatch: 'plugins: forked*'
E and: 'platform linux -- Python 3.12.0b1, pytest-7.3.1, pluggy-1.0.0'
E and: 'rootdir: /tmp/pytest-of-mgorny/pytest-2/test_xfail1'
E fnmatch: 'plugins: forked*'
E with: 'plugins: forked-1.6.1.dev4+gd9d05e2'
E exact match: 'collected 1 item'
E nomatch: 'test_xfail.py F*'
E and: ''
E fnmatch: 'test_xfail.py F*'
E with: 'test_xfail.py F [100%]'
E nomatch: '*==== FAILURES ====*'
E and: ''
E fnmatch: '*==== FAILURES ====*'
E with: '============================================================== FAILURES ==============================================================='
E fnmatch: '*____ test_function ____*'
E with: '____________________________________________________________ test_function ____________________________________________________________'
E exact match: '[XPASS(strict)] The process gets terminated'
E nomatch: '*==== short test summary info ====*'
E and: '========================================================== warnings summary ==========================================================='
E and: '../../../pytest-forked/.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:927'
E and: ' /tmp/pytest-forked/.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:927: DeprecationWarning: ast.Str is deprecated and will be removed in Python 3.14; use ast.Constant instead'
E and: ' assertmsg = ast.Str("")'
E and: ''
E and: '../../../pytest-forked/.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:929'
E and: ' /tmp/pytest-forked/.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:929: DeprecationWarning: ast.Str is deprecated and will be removed in Python 3.14; use ast.Constant instead'
E and: ' template = ast.BinOp(assertmsg, ast.Add(), ast.Str(explanation))'
E and: ''
E and: '../../../pytest-forked/.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:817'
E and: ' /tmp/pytest-forked/.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:817: DeprecationWarning: ast.Str is deprecated and will be removed in Python 3.14; use ast.Constant instead'
E and: ' keys = [ast.Str(key) for key in current.keys()]'
E and: ''
E and: '../../../pytest-forked/.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:941'
E and: ' /tmp/pytest-forked/.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:941: DeprecationWarning: ast.NameConstant is deprecated and will be removed in Python 3.14; use ast.Constant instead'
E and: ' clear = ast.Assign(variables, ast.NameConstant(None))'
E and: ''
E and: '-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html'
E fnmatch: '*==== short test summary info ====*'
E with: '======================================================= short test summary info ======================================================='
E exact match: 'FAILED test_xfail.py::test_function'
E nomatch: '*==== 1 failed in 0.*s* ====*'
E and: '==================================================== 1 failed, 4 warnings in 0.01s ===================================================='
E remains unmatched: '*==== 1 failed in 0.*s* ====*'
/tmp/pytest-forked/testing/test_xfail_behavior.py:121: Failed
-------------------------------------------------------- Captured stdout call ---------------------------------------------------------
========================================================= test session starts =========================================================
platform linux -- Python 3.12.0b1, pytest-7.3.1, pluggy-1.0.0
rootdir: /tmp/pytest-of-mgorny/pytest-2/test_xfail1
plugins: forked-1.6.1.dev4+gd9d05e2
collected 1 item
test_xfail.py F [100%]
============================================================== FAILURES ===============================================================
____________________________________________________________ test_function ____________________________________________________________
[XPASS(strict)] The process gets terminated
========================================================== warnings summary ===========================================================
../../../pytest-forked/.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:927
/tmp/pytest-forked/.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:927: DeprecationWarning: ast.Str is deprecated and will be removed in Python 3.14; use ast.Constant instead
assertmsg = ast.Str("")
../../../pytest-forked/.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:929
/tmp/pytest-forked/.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:929: DeprecationWarning: ast.Str is deprecated and will be removed in Python 3.14; use ast.Constant instead
template = ast.BinOp(assertmsg, ast.Add(), ast.Str(explanation))
../../../pytest-forked/.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:817
/tmp/pytest-forked/.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:817: DeprecationWarning: ast.Str is deprecated and will be removed in Python 3.14; use ast.Constant instead
keys = [ast.Str(key) for key in current.keys()]
../../../pytest-forked/.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:941
/tmp/pytest-forked/.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:941: DeprecationWarning: ast.NameConstant is deprecated and will be removed in Python 3.14; use ast.Constant instead
clear = ast.Assign(variables, ast.NameConstant(None))
-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
======================================================= short test summary info =======================================================
FAILED test_xfail.py::test_function
==================================================== 1 failed, 4 warnings in 0.01s ====================================================
____________________________________________________ test_xfail[non-strict xpass] _____________________________________________________
is_crashing = False, is_strict = False, testdir = <Testdir local('/tmp/pytest-of-mgorny/pytest-2/test_xfail3')>
@pytest.mark.parametrize(
("is_crashing", "is_strict"),
(
pytest.param(True, True, id="strict xfail"),
pytest.param(False, True, id="strict xpass"),
pytest.param(True, False, id="non-strict xfail"),
pytest.param(False, False, id="non-strict xpass"),
),
)
def test_xfail(is_crashing, is_strict, testdir):
"""Test xfail/xpass/strict permutations."""
# pylint: disable=possibly-unused-variable
sig_num = signal.SIGTERM.numerator
test_func_body = (
"os.kill(os.getpid(), signal.SIGTERM)" if is_crashing else "assert True"
)
if is_crashing:
# marked xfailed and crashing, no matter strict or not
expected_letter = "x" # XFAILED
expected_lowercase = "xfailed"
expected_word = "XFAIL"
elif is_strict:
# strict and not failing as expected should cause failure
expected_letter = "F" # FAILED
expected_lowercase = "failed"
expected_word = FAILED_WORD
elif not is_strict:
# non-strict and not failing as expected should cause xpass
expected_letter = "X" # XPASS
expected_lowercase = "xpassed"
expected_word = "XPASS"
session_start_title = "*==== test session starts ====*"
loaded_pytest_plugins = "plugins: forked*"
collected_tests_num = "collected 1 item"
expected_progress = f"test_xfail.py {expected_letter!s}*"
failures_title = "*==== FAILURES ====*"
failures_test_name = "*____ test_function ____*"
failures_test_reason = "[XPASS(strict)] The process gets terminated"
short_test_summary_title = "*==== short test summary info ====*"
short_test_summary = f"{expected_word!s} test_xfail.py::test_function"
if expected_lowercase == "xpassed":
# XPASS wouldn't have the crash message from
# pytest-forked because the crash doesn't happen
short_test_summary = " ".join(
(
short_test_summary,
"The process gets terminated",
)
)
reason_string = (
f"reason: The process gets terminated; "
f"pytest-forked reason: "
f"*:*: running the test CRASHED with signal {sig_num:d}"
)
if expected_lowercase == "xfailed" and PYTEST_GTE_7_2:
short_test_summary += " - " + reason_string
total_summary_line = f"*==== 1 {expected_lowercase!s} in 0.*s* ====*"
expected_lines = (
session_start_title,
loaded_pytest_plugins,
collected_tests_num,
expected_progress,
)
if expected_word == FAILED_WORD:
# XPASS(strict)
expected_lines += (
failures_title,
failures_test_name,
failures_test_reason,
)
expected_lines += (
short_test_summary_title,
short_test_summary,
)
if expected_lowercase == "xpassed" and expected_word == FAILED_WORD:
# XPASS(strict)
expected_lines += (" " + reason_string,)
expected_lines += (total_summary_line,)
test_module = testdir.makepyfile(
f"""
import os
import signal
import pytest
# The current implementation emits RuntimeWarning.
pytestmark = pytest.mark.filterwarnings('ignore:pytest-forked xfail')
@pytest.mark.xfail(
reason='The process gets terminated',
strict={is_strict!s},
)
@pytest.mark.forked
def test_function():
{test_func_body!s}
"""
)
pytest_run_result = testdir.runpytest(test_module, "-ra")
> pytest_run_result.stdout.fnmatch_lines(expected_lines)
E Failed: fnmatch: '*==== test session starts ====*'
E with: '========================================================= test session starts ========================================================='
E nomatch: 'plugins: forked*'
E and: 'platform linux -- Python 3.12.0b1, pytest-7.3.1, pluggy-1.0.0'
E and: 'rootdir: /tmp/pytest-of-mgorny/pytest-2/test_xfail3'
E fnmatch: 'plugins: forked*'
E with: 'plugins: forked-1.6.1.dev4+gd9d05e2'
E exact match: 'collected 1 item'
E nomatch: 'test_xfail.py X*'
E and: ''
E fnmatch: 'test_xfail.py X*'
E with: 'test_xfail.py X [100%]'
E nomatch: '*==== short test summary info ====*'
E and: ''
E and: '========================================================== warnings summary ==========================================================='
E and: '../../../pytest-forked/.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:927'
E and: ' /tmp/pytest-forked/.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:927: DeprecationWarning: ast.Str is deprecated and will be removed in Python 3.14; use ast.Constant instead'
E and: ' assertmsg = ast.Str("")'
E and: ''
E and: '../../../pytest-forked/.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:929'
E and: ' /tmp/pytest-forked/.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:929: DeprecationWarning: ast.Str is deprecated and will be removed in Python 3.14; use ast.Constant instead'
E and: ' template = ast.BinOp(assertmsg, ast.Add(), ast.Str(explanation))'
E and: ''
E and: '../../../pytest-forked/.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:817'
E and: ' /tmp/pytest-forked/.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:817: DeprecationWarning: ast.Str is deprecated and will be removed in Python 3.14; use ast.Constant instead'
E and: ' keys = [ast.Str(key) for key in current.keys()]'
E and: ''
E and: '../../../pytest-forked/.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:941'
E and: ' /tmp/pytest-forked/.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:941: DeprecationWarning: ast.NameConstant is deprecated and will be removed in Python 3.14; use ast.Constant instead'
E and: ' clear = ast.Assign(variables, ast.NameConstant(None))'
E and: ''
E and: '-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html'
E fnmatch: '*==== short test summary info ====*'
E with: '======================================================= short test summary info ======================================================='
E exact match: 'XPASS test_xfail.py::test_function The process gets terminated'
E nomatch: '*==== 1 xpassed in 0.*s* ====*'
E and: '=================================================== 1 xpassed, 4 warnings in 0.01s ===================================================='
E remains unmatched: '*==== 1 xpassed in 0.*s* ====*'
/tmp/pytest-forked/testing/test_xfail_behavior.py:121: Failed
-------------------------------------------------------- Captured stdout call ---------------------------------------------------------
========================================================= test session starts =========================================================
platform linux -- Python 3.12.0b1, pytest-7.3.1, pluggy-1.0.0
rootdir: /tmp/pytest-of-mgorny/pytest-2/test_xfail3
plugins: forked-1.6.1.dev4+gd9d05e2
collected 1 item
test_xfail.py X [100%]
========================================================== warnings summary ===========================================================
../../../pytest-forked/.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:927
/tmp/pytest-forked/.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:927: DeprecationWarning: ast.Str is deprecated and will be removed in Python 3.14; use ast.Constant instead
assertmsg = ast.Str("")
../../../pytest-forked/.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:929
/tmp/pytest-forked/.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:929: DeprecationWarning: ast.Str is deprecated and will be removed in Python 3.14; use ast.Constant instead
template = ast.BinOp(assertmsg, ast.Add(), ast.Str(explanation))
../../../pytest-forked/.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:817
/tmp/pytest-forked/.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:817: DeprecationWarning: ast.Str is deprecated and will be removed in Python 3.14; use ast.Constant instead
keys = [ast.Str(key) for key in current.keys()]
../../../pytest-forked/.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:941
/tmp/pytest-forked/.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:941: DeprecationWarning: ast.NameConstant is deprecated and will be removed in Python 3.14; use ast.Constant instead
clear = ast.Assign(variables, ast.NameConstant(None))
-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
======================================================= short test summary info =======================================================
XPASS test_xfail.py::test_function The process gets terminated
=================================================== 1 xpassed, 4 warnings in 0.01s ====================================================
========================================================== warnings summary ===========================================================
.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:683
.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:683
.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:683
/tmp/pytest-forked/.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:683: DeprecationWarning: ast.Str is deprecated and will be removed in Python 3.14; use ast.Constant instead
and isinstance(item.value, ast.Str)
.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:685
.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:685
/tmp/pytest-forked/.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:685: DeprecationWarning: Attribute s is deprecated and will be removed in Python 3.14; use value instead
doc = item.value.s
.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:965
.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:965
.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:965
.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:965
.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:965
/tmp/pytest-forked/.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:965: DeprecationWarning: ast.Str is deprecated and will be removed in Python 3.14; use ast.Constant instead
inlocs = ast.Compare(ast.Str(name.id), [ast.In()], [locs])
.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:968
.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:968
.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:968
.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:968
.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:968
/tmp/pytest-forked/.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:968: DeprecationWarning: ast.Str is deprecated and will be removed in Python 3.14; use ast.Constant instead
expr = ast.IfExp(test, self.display(name), ast.Str(name.id))
.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:1102
.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:1102
/tmp/pytest-forked/.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:1102: DeprecationWarning: ast.Str is deprecated and will be removed in Python 3.14; use ast.Constant instead
syms.append(ast.Str(sym))
.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:1104
.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:1104
/tmp/pytest-forked/.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:1104: DeprecationWarning: ast.Str is deprecated and will be removed in Python 3.14; use ast.Constant instead
expls.append(ast.Str(expl))
.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:817
.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:817
.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:817
.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:817
.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:817
.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:817
.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:817
.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:817
.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:817
/tmp/pytest-forked/.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:817: DeprecationWarning: ast.Str is deprecated and will be removed in Python 3.14; use ast.Constant instead
keys = [ast.Str(key) for key in current.keys()]
.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:927
.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:927
/tmp/pytest-forked/.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:927: DeprecationWarning: ast.Str is deprecated and will be removed in Python 3.14; use ast.Constant instead
assertmsg = ast.Str("")
.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:929
.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:929
.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:929
/tmp/pytest-forked/.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:929: DeprecationWarning: ast.Str is deprecated and will be removed in Python 3.14; use ast.Constant instead
template = ast.BinOp(assertmsg, ast.Add(), ast.Str(explanation))
.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:941
.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:941
.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:941
.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:941
/tmp/pytest-forked/.tox/py312/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:941: DeprecationWarning: ast.NameConstant is deprecated and will be removed in Python 3.14; use ast.Constant instead
clear = ast.Assign(variables, ast.NameConstant(None))
-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
======================================================= short test summary info =======================================================
FAILED testing/test_xfail_behavior.py::test_xfail[strict xpass] - Failed: fnmatch: '*==== test session starts ====*'
FAILED testing/test_xfail_behavior.py::test_xfail[non-strict xpass] - Failed: fnmatch: '*==== test session starts ====*'
XFAIL testing/test_boxed.py::test_functional_boxed_capturing[sys] - capture cleanup needed
XFAIL testing/test_boxed.py::test_functional_boxed_capturing[fd] - capture cleanup needed
========================================= 2 failed, 6 passed, 2 xfailed, 37 warnings in 0.66s =========================================
- Lenguaje dominante
- Python
- Estrellas
- 83
- Forks
- 29
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
Aún no hemos revisado los archivos de configuración de este proyecto. Empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de pytest-dev/pytest-forked
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
pytest-dev/pytest-forked#106 ·
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 62/100
pytest-dev/pytest-forked#84 ·
-
Fork per subpathAbierto
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
pytest-dev/pytest-forked#94 ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 30/100
pytest-dev/pytest-forked#88 · 12 comentarios ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
pytest-dev/pytest-forked#87 · 1 reacción ·
Todos los issues de pytest-dev/pytest-forked
Issues similares
-
good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
vllm-project/vllm-metal#822 ·
Los mantenedores suelen responder en 1 día
-
vector-store
Dificultad 1/5 1-3 horas Aptitud para principiantes 90/100
mem0ai/mem0#7461 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
[Bug]: chunk_span_bounds and _validated_chunk_spans reject Pydantic models ChunkSpan and AudioFileAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
BasedHardware/omi#19047 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
Los mantenedores suelen responder en 1 día