0

我遇到了 pytest 参数化的问题 - 递归调用永远不会停止。

我们创建了一个自定义标记并将其多次分配给同一个测试

在 pytest 生成器中,标记被参数化,以便每个标记运行一次测试。

当存在多个消息代理标记时,测试会失败,因为递归调用永远不会停止。

我想通过强制停止条件来解决这个问题,但我很乐意听到任何替代解决方案。

这是使用 2 个不同的消息代理标记的测试的错误:

tests/markers/test_message_broker_marker.py:3 (test_successful_with_parameterized_message_brokers[2])
{'passed': 1, 'skipped': 0, 'failed': 0, 'errors': 0, 'xpassed': 0, 'xfailed': 0} != {'passed': 2, 'skipped': 0, 'failed': 0, 'errors': 0, 'xpassed': 0, 'xfailed': 0}

Expected :{'passed': 2, 'skipped': 0, 'failed': 0, 'errors': 0, 'xpassed': 0, 'xfailed': 0}
Actual   :{'passed': 1, 'skipped': 0, 'failed': 0, 'errors': 0, 'xpassed': 0, 'xfailed': 0}
<Click to see difference>

testdir = <Testdir local('/tmp/pytest-of-naomi/pytest-2/test_successful_with_parameterized_message_brokers1')>
number_of_brokers = 2

    @pytest.mark.parametrize("number_of_brokers", range(1, 3))
    def test_successful_with_parameterized_message_brokers(testdir, number_of_brokers):
        testdir.copy_example("test_examples.py")
        result = testdir.runpytest("-k", f"test_successful_when_message_broker_quantity_is_{number_of_brokers}")
>       result.assert_outcomes(passed=number_of_brokers)
E       AssertionError: assert {'errors': 0,\n 'failed': 0,\n 'passed': 1,\n 'skipped': 0,\n 'xfailed': 0,\n 'xpassed': 0} == {'errors': 0,\n 'failed': 0,\n 'passed': 2,\n 'skipped': 0,\n 'xfailed': 0,\n 'xpassed': 0}
E         Common items:
E         {'errors': 0, 'failed': 0, 'skipped': 0, 'xfailed': 0, 'xpassed': 0}
E         Differing items:
E         {'passed': 1} != {'passed': 2}
E         Full diff:
E           {
E            'errors': 0,
E            'failed': 0,
E         -  'passed': 2,
E         ?            ^
E         +  'passed': 1,
E         ?            ^
E            'skipped': 0,
E            'xfailed': 0,
E            'xpassed': 0,
E           }

/home/naomi/Documents/projects/pytest-celery/tests/markers/test_message_broker_marker.py:8: AssertionError

4

0 回答 0