[Python-modules-team] Bug#977079: pytest-bdd FTBFS with pytest 6

Christian Kastner ckk at debian.org
Thu Dec 10 20:00:23 GMT 2020


Source: pytest-bdd
Version: 3.2.1-1
Severity: important
User: pytest at packages.debian.org
Usertags: pytest-v6

Hi,

pytest-bdd FTBFS with pytest 6 in experimental. The pytest changelog may
offer clues as to why:

    https://docs.pytest.org/en/stable/changelog.html

The error log below has more details.

> I: pybuild base:232: python3.9 -m pytest
> ============================= test session starts ==============================
> platform linux -- Python 3.9.1, pytest-6.0.2, py-1.9.0, pluggy-0.13.0 -- /usr/bin/python3.9
> cachedir: .pytest_cache
> rootdir: /<<PKGBUILDDIR>>, configfile: pytest.ini
> plugins: bdd-3.2.1
> collecting ... collected 152 items
> 
> tests/args/cfparse/test_args.py::test_steps <- pytest_bdd/scenario.py PASSED [  0%]
> tests/args/cfparse/test_args.py::test_argument_in_when_step_1 <- pytest_bdd/scenario.py PASSED [  1%]
> tests/args/cfparse/test_args.py::test_argument_in_when_step_2 <- pytest_bdd/scenario.py PASSED [  1%]
> tests/args/parse/test_args.py::test_steps <- pytest_bdd/scenario.py PASSED [  2%]
> tests/args/parse/test_args.py::test_argument_in_when_step_1 <- pytest_bdd/scenario.py PASSED [  3%]
> tests/args/parse/test_args.py::test_argument_in_when_step_2 <- pytest_bdd/scenario.py PASSED [  3%]
> tests/args/regex/test_args.py::test_steps <- pytest_bdd/scenario.py PASSED [  4%]
> tests/args/regex/test_args.py::test_argument_in_when_step_1 <- pytest_bdd/scenario.py PASSED [  5%]
> tests/args/regex/test_args.py::test_argument_in_when_step_2 <- pytest_bdd/scenario.py PASSED [  5%]
> tests/args/subfolder/test_args.py::test_steps <- pytest_bdd/scenario.py PASSED [  6%]
> tests/feature/test_alias.py::test_steps <- pytest_bdd/scenario.py PASSED [  7%]
> tests/feature/test_gherkin_terminal_reporter.py::test_Should_default_output_be_the_same_as_regular_terminal_reporter <- pytest_bdd/scenario.py FAILED [  7%]
> tests/feature/test_gherkin_terminal_reporter.py::test_Should_verbose_mode_enable_displaying_feature_and_scenario_names_rather_than_test_names_in_a_single_line <- pytest_bdd/scenario.py PASSED [  8%]
> tests/feature/test_gherkin_terminal_reporter.py::test_Should_verbose_mode_preserve_displaying_of_regular_tests_as_usual <- pytest_bdd/scenario.py PASSED [  9%]
> tests/feature/test_gherkin_terminal_reporter.py::test_Should_double_verbose_mode_enable_displaying_of_full_gherkin_scenario_description <- pytest_bdd/scenario.py PASSED [  9%]
> tests/feature/test_gherkin_terminal_reporter.py::test_Should_error_message_be_displayed_when_no_scenario_is_found[compact mode] <- pytest_bdd/scenario.py PASSED [ 10%]
> tests/feature/test_gherkin_terminal_reporter.py::test_Should_error_message_be_displayed_when_no_scenario_is_found[line per test] <- pytest_bdd/scenario.py PASSED [ 11%]
> tests/feature/test_gherkin_terminal_reporter.py::test_Should_error_message_be_displayed_when_no_scenario_is_found[verbose] <- pytest_bdd/scenario.py PASSED [ 11%]
> tests/feature/test_gherkin_terminal_reporter.py::test_Should_error_message_be_displayed_when_no_step_is_found[compact mode] <- pytest_bdd/scenario.py PASSED [ 12%]
> tests/feature/test_gherkin_terminal_reporter.py::test_Should_error_message_be_displayed_when_no_step_is_found[line per test] <- pytest_bdd/scenario.py PASSED [ 13%]
> tests/feature/test_gherkin_terminal_reporter.py::test_Should_error_message_be_displayed_when_no_step_is_found[verbose] <- pytest_bdd/scenario.py PASSED [ 13%]
> tests/feature/test_gherkin_terminal_reporter.py::test_Should_error_message_be_displayed_when_error_occurs_during_test_execution[compact mode] <- pytest_bdd/scenario.py PASSED [ 14%]
> tests/feature/test_gherkin_terminal_reporter.py::test_Should_error_message_be_displayed_when_error_occurs_during_test_execution[line per test] <- pytest_bdd/scenario.py PASSED [ 15%]
> tests/feature/test_gherkin_terminal_reporter.py::test_Should_error_message_be_displayed_when_error_occurs_during_test_execution[verbose] <- pytest_bdd/scenario.py PASSED [ 15%]
> tests/feature/test_gherkin_terminal_reporter.py::test_Should_local_variables_be_displayed_when___showlocals_option_is_used <- pytest_bdd/scenario.py PASSED [ 16%]
> tests/feature/test_gherkin_terminal_reporter.py::test_Should_step_parameters_be_replaced_by_their_values <- pytest_bdd/scenario.py PASSED [ 17%]
> tests/feature/test_outline.py::test_outlined[12-5.0-7] <- pytest_bdd/scenario.py PASSED [ 17%]
> tests/feature/test_outline.py::test_outlined[5-4.0-1] <- pytest_bdd/scenario.py PASSED [ 18%]
> tests/feature/test_outline.py::test_outlined_with_other_fixtures[1-12-5.0-7] <- pytest_bdd/scenario.py PASSED [ 19%]
> tests/feature/test_outline.py::test_outlined_with_other_fixtures[1-5-4.0-1] <- pytest_bdd/scenario.py PASSED [ 19%]
> tests/feature/test_outline.py::test_outlined_with_other_fixtures[2-12-5.0-7] <- pytest_bdd/scenario.py PASSED [ 20%]
> tests/feature/test_outline.py::test_outlined_with_other_fixtures[2-5-4.0-1] <- pytest_bdd/scenario.py PASSED [ 21%]
> tests/feature/test_outline.py::test_outlined_with_other_fixtures[3-12-5.0-7] <- pytest_bdd/scenario.py PASSED [ 21%]
> tests/feature/test_outline.py::test_outlined_with_other_fixtures[3-5-4.0-1] <- pytest_bdd/scenario.py PASSED [ 22%]
> tests/feature/test_outline.py::test_vertical_example[12-5.0-7] <- pytest_bdd/scenario.py PASSED [ 23%]
> tests/feature/test_outline.py::test_vertical_example[2-1.0-1] <- pytest_bdd/scenario.py PASSED [ 23%]
> tests/feature/test_outline.py::test_outlined_feature[12-5.0-7-oranges] <- pytest_bdd/scenario.py PASSED [ 24%]
> tests/feature/test_outline.py::test_outlined_feature[12-5.0-7-apples] <- pytest_bdd/scenario.py PASSED [ 25%]
> tests/feature/test_outline.py::test_outlined_feature[5-4.0-1-oranges] <- pytest_bdd/scenario.py PASSED [ 25%]
> tests/feature/test_outline.py::test_outlined_feature[5-4.0-1-apples] <- pytest_bdd/scenario.py PASSED [ 26%]
> tests/feature/test_outline_empty_values.py::test_scenario_with_empty_example_values[#--] <- pytest_bdd/scenario.py PASSED [ 26%]
> tests/feature/test_outline_empty_values.py::test_scenario_with_empty_example_values_vertical[#--] <- pytest_bdd/scenario.py PASSED [ 27%]
> tests/feature/test_parametrized.py::test_parametrized[12-5-7] <- pytest_bdd/scenario.py PASSED [ 28%]
> tests/feature/test_parametrized.py::test_parametrized_with_other_fixtures[1-12-5-7] <- pytest_bdd/scenario.py PASSED [ 28%]
> tests/feature/test_parametrized.py::test_parametrized_with_other_fixtures[2-12-5-7] <- pytest_bdd/scenario.py PASSED [ 29%]
> tests/feature/test_reuse.py::test_reuse <- pytest_bdd/scenario.py PASSED [ 30%]
> tests/feature/test_same_function_name.py::test_when_function_name_same_as_step_name <- pytest_bdd/scenario.py PASSED [ 30%]
> tests/feature/test_steps.py::test_steps <- pytest_bdd/scenario.py PASSED [ 31%]
> tests/feature/test_steps.py::test_when_first <- pytest_bdd/scenario.py PASSED [ 32%]
> tests/feature/test_steps.py::test_then_after_given <- pytest_bdd/scenario.py PASSED [ 32%]
> tests/feature/test_steps.py::test_conftest <- pytest_bdd/scenario.py PASSED [ 33%]
> tests/steps/test_given.py::test_given_with_fixture <- pytest_bdd/scenario.py PASSED [ 34%]
> tests/steps/test_given.py::test_root_alias <- pytest_bdd/scenario.py PASSED [ 34%]
> tests/steps/test_given.py::test_session_given <- pytest_bdd/scenario.py PASSED [ 35%]
> tests/steps/test_given.py::test_given_injection <- pytest_bdd/scenario.py PASSED [ 36%]
> tests/steps/test_unicode.py::test_steps_in_feature_file_have_unicode <- pytest_bdd/scenario.py PASSED [ 36%]
> tests/steps/test_unicode.py::test_steps_in_py_file_have_unicode <- pytest_bdd/scenario.py PASSED [ 37%]
> tests/args/cfparse/test_args.py::test_multiple_given PASSED              [ 38%]
> tests/args/parse/test_args.py::test_multiple_given PASSED                [ 38%]
> tests/args/regex/test_args.py::test_multiple_given PASSED                [ 39%]
> tests/args/test_arg_fixture_mix.py::test_arg_fixture_mix PASSED          [ 40%]
> tests/feature/test_background.py::test_background_basic PASSED           [ 40%]
> tests/feature/test_background.py::test_background_check_order PASSED     [ 41%]
> tests/feature/test_cucumber_json.py::test_step_trace PASSED              [ 42%]
> tests/feature/test_cucumber_json.py::test_step_trace_with_expand_option PASSED [ 42%]
> tests/feature/test_description.py::test_description PASSED               [ 43%]
> tests/feature/test_feature_base_dir.py::test_feature_path_not_found[.] PASSED [ 44%]
> tests/feature/test_feature_base_dir.py::test_feature_path_not_found[/does/not/exist/] PASSED [ 44%]
> tests/feature/test_feature_base_dir.py::test_feature_path_ok PASSED      [ 45%]
> tests/feature/test_feature_base_dir.py::test_feature_path_by_param_not_found PASSED [ 46%]
> tests/feature/test_feature_base_dir.py::test_feature_path_by_param_ok[.] PASSED [ 46%]
> tests/feature/test_feature_base_dir.py::test_feature_path_by_param_ok[/does/not/exist/] PASSED [ 47%]
> tests/feature/test_gherkin_terminal_reporter.py::test_scenario_in_expanded_mode[./steps/unicode.feature-./steps/test_unicode.py-test_steps_in_feature_file_have_unicode] PASSED [ 48%]
> tests/feature/test_multiline.py::test_multiline[\nScenario: Multiline step using sub indentation\n    Given I have a step with:\n        Some\n\n        Extra\n        Lines\n    Then the text should be parsed with correct indentation\n-Some\n\nExtra\nLines] PASSED [ 48%]
> tests/feature/test_multiline.py::test_multiline[\nScenario: Multiline step using sub indentation\n    Given I have a step with:\n        Some\n\n      Extra\n     Lines\n\n    Then the text should be parsed with correct indentation\n-   Some\n\n Extra\nLines] PASSED [ 49%]
> tests/feature/test_multiline.py::test_multiline[\nFeature:\nScenario: Multiline step using sub indentation\n    Given I have a step with:\n        Some\n        Extra\n        Lines\n\n-Some\nExtra\nLines] PASSED [ 50%]
> tests/feature/test_multiline.py::test_multiline_wrong_indent PASSED      [ 50%]
> tests/feature/test_no_scenario.py::test_no_scenarios PASSED              [ 51%]
> tests/feature/test_no_scenario.py::test_only_background_strict_mode PASSED [ 51%]
> tests/feature/test_no_sctrict_gherkin.py::test_background_no_strict_gherkin PASSED [ 52%]
> tests/feature/test_no_sctrict_gherkin.py::test_scenario_no_strict_gherkin PASSED [ 53%]
> tests/feature/test_outline.py::test_wrongly_outlined PASSED              [ 53%]
> tests/feature/test_outline.py::test_wrong_vertical_examples_scenario PASSED [ 54%]
> tests/feature/test_outline.py::test_wrong_vertical_examples_feature PASSED [ 55%]
> tests/feature/test_report.py::test_step_trace PASSED                     [ 55%]
> tests/feature/test_report.py::test_complex_types PASSED                  [ 56%]
> tests/feature/test_scenario.py::test_scenario_not_found PASSED           [ 57%]
> tests/feature/test_scenario.py::test_scenario_comments PASSED            [ 57%]
> tests/feature/test_scenario.py::test_scenario_not_decorator PASSED       [ 58%]
> tests/feature/test_scenarios.py::test_scenarios PASSED                   [ 59%]
> tests/feature/test_scenarios.py::test_scenarios_none_found PASSED        [ 59%]
> tests/feature/test_steps.py::test_multiple_given PASSED                  [ 60%]
> tests/feature/test_steps.py::test_step_hooks PASSED                      [ 61%]
> tests/feature/test_steps.py::test_step_trace PASSED                      [ 61%]
> tests/feature/test_tags.py::test_tags_selector PASSED                    [ 62%]
> tests/feature/test_tags.py::test_tags_after_background_issue_160 PASSED  [ 63%]
> tests/feature/test_tags.py::test_apply_tag_hook PASSED                   [ 63%]
> tests/feature/test_tags.py::test_tag_with_spaces PASSED                  [ 64%]
> tests/feature/test_tags.py::test_at_in_scenario PASSED                   [ 65%]
> tests/feature/test_tags.py::test_get_tags[@foo @bar-expected0] PASSED    [ 65%]
> tests/feature/test_tags.py::test_get_tags[@with spaces @bar-expected1] PASSED [ 66%]
> tests/feature/test_tags.py::test_get_tags[@double @double-expected2] PASSED [ 67%]
> tests/feature/test_tags.py::test_get_tags[    @indented-expected3] PASSED [ 67%]
> tests/feature/test_tags.py::test_get_tags[None-expected4] PASSED         [ 68%]
> tests/feature/test_tags.py::test_get_tags[foobar-expected5] PASSED       [ 69%]
> tests/feature/test_tags.py::test_get_tags[-expected6] PASSED             [ 69%]
> tests/feature/test_wrong.py::test_wrong[True-True-when_in_background.feature-When in background] PASSED [ 70%]
> tests/feature/test_wrong.py::test_wrong[True-True-when_after_then.feature-When after then] PASSED [ 71%]
> tests/feature/test_wrong.py::test_wrong[True-True-then_first.feature-Then first] PASSED [ 71%]
> tests/feature/test_wrong.py::test_wrong[True-True-given_after_when.feature-Given after When] PASSED [ 72%]
> tests/feature/test_wrong.py::test_wrong[True-True-given_after_then.feature-Given after Then] PASSED [ 73%]
> tests/feature/test_wrong.py::test_wrong[True-False-when_in_background.feature-When in background] PASSED [ 73%]
> tests/feature/test_wrong.py::test_wrong[True-False-when_after_then.feature-When after then] PASSED [ 74%]
> tests/feature/test_wrong.py::test_wrong[True-False-then_first.feature-Then first] PASSED [ 75%]
> tests/feature/test_wrong.py::test_wrong[True-False-given_after_when.feature-Given after When] PASSED [ 75%]
> tests/feature/test_wrong.py::test_wrong[True-False-given_after_then.feature-Given after Then] PASSED [ 76%]
> tests/feature/test_wrong.py::test_wrong[False-True-when_in_background.feature-When in background] PASSED [ 76%]
> tests/feature/test_wrong.py::test_wrong[False-True-when_after_then.feature-When after then] PASSED [ 77%]
> tests/feature/test_wrong.py::test_wrong[False-True-then_first.feature-Then first] PASSED [ 78%]
> tests/feature/test_wrong.py::test_wrong[False-True-given_after_when.feature-Given after When] PASSED [ 78%]
> tests/feature/test_wrong.py::test_wrong[False-True-given_after_then.feature-Given after Then] PASSED [ 79%]
> tests/feature/test_wrong.py::test_wrong[False-False-when_in_background.feature-When in background] PASSED [ 80%]
> tests/feature/test_wrong.py::test_wrong[False-False-when_after_then.feature-When after then] PASSED [ 80%]
> tests/feature/test_wrong.py::test_wrong[False-False-then_first.feature-Then first] PASSED [ 81%]
> tests/feature/test_wrong.py::test_wrong[False-False-given_after_when.feature-Given after When] PASSED [ 82%]
> tests/feature/test_wrong.py::test_wrong[False-False-given_after_then.feature-Given after Then] PASSED [ 82%]
> tests/feature/test_wrong.py::test_wrong_type_order[When in Given] PASSED [ 83%]
> tests/feature/test_wrong.py::test_wrong_type_order[When in Then] PASSED  [ 84%]
> tests/feature/test_wrong.py::test_wrong_type_order[Then in Given] PASSED [ 84%]
> tests/feature/test_wrong.py::test_wrong_type_order[Given in When] PASSED [ 85%]
> tests/feature/test_wrong.py::test_wrong_type_order[Given in Then] PASSED [ 86%]
> tests/feature/test_wrong.py::test_wrong_type_order[Then in When] PASSED  [ 86%]
> tests/feature/test_wrong.py::test_verbose_output PASSED                  [ 87%]
> tests/feature/test_wrong.py::test_multiple_features_single_file PASSED   [ 88%]
> tests/generation/test_generate_missing.py::test_python_name_generator PASSED [ 88%]
> tests/generation/test_generate_missing.py::test_generate_missing PASSED  [ 89%]
> tests/library/child/test_local_override.py::test_override PASSED         [ 90%]
> tests/library/child/test_local_override.py::test_parent PASSED           [ 90%]
> tests/library/child/test_parent_override.py::test_parent PASSED          [ 91%]
> tests/library/child/test_parent_override.py::test_override PASSED        [ 92%]
> tests/library/test_parent.py::test_parent PASSED                         [ 92%]
> tests/library/test_parent.py::test_global_when_step PASSED               [ 93%]
> tests/scripts/test_generate.py::test_generate PASSED                     [ 94%]
> tests/scripts/test_main.py::test_main PASSED                             [ 94%]
> tests/scripts/test_migrate.py::test_migrate PASSED                       [ 95%]
> tests/steps/test_given.py::test_decorate_with_fixture PASSED             [ 96%]
> tests/steps/test_steps.py::test_when_then PASSED                         [ 96%]
> tests/steps/test_steps.py::test_preserve_decorator[given-Given] PASSED   [ 97%]
> tests/steps/test_steps.py::test_preserve_decorator[when-When] PASSED     [ 98%]
> tests/steps/test_steps.py::test_preserve_decorator[then-Then] PASSED     [ 98%]
> tests/test_hooks.py::test_hooks PASSED                                   [ 99%]
> tests/test_hooks.py::test_item_collection_does_not_break_on_non_function_items FAILED [100%]
> 
> =================================== FAILURES ===================================
> _____ test_Should_default_output_be_the_same_as_regular_terminal_reporter ______
> 
> request = <FixtureRequest for <Function test_Should_default_output_be_the_same_as_regular_terminal_reporter>>
> 
>     @pytest.mark.usefixtures(*function_args)
>     def scenario_wrapper(request):
>>       _execute_scenario(feature, scenario, request, encoding)
> 
> args       = []
> encoding   = 'utf-8'
> feature    = <pytest_bdd.feature.Feature object at 0x7f8d4f851850>
> fn         = <function test_Should_default_output_be_the_same_as_regular_terminal_reporter at 0x7f8d4f7d5160>
> request    = <FixtureRequest for <Function test_Should_default_output_be_the_same_as_regular_terminal_reporter>>
> scenario   = <pytest_bdd.feature.Scenario object at 0x7f8d4f84dd00>
> 
> /<<PKGBUILDDIR>>/pytest_bdd/scenario.py:227: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> /<<PKGBUILDDIR>>/pytest_bdd/scenario.py:189: in _execute_scenario
>     _execute_step_function(request, scenario, step, step_func)
>         encoding   = 'utf-8'
>         feature    = <pytest_bdd.feature.Feature object at 0x7f8d4f851850>
>         givens     = {'gherkin_scenario'}
>         request    = <FixtureRequest for <Function test_Should_default_output_be_the_same_as_regular_terminal_reporter>>
>         scenario   = <pytest_bdd.feature.Scenario object at 0x7f8d4f84dd00>
>         step       = <pytest_bdd.feature.Step object at 0x7f8d4f84d160>
>         step_func  = <function output_must_be_the_same_as_regular_reporter at 0x7f8d4f725dc0>
> /<<PKGBUILDDIR>>/pytest_bdd/scenario.py:130: in _execute_step_function
>     step_func(**kwargs)
>         kw         = {'feature': <pytest_bdd.feature.Feature object at 0x7f8d4f851850>,
>  'request': <FixtureRequest for <Function test_Should_default_output_be_the_same_as_regular_terminal_reporter>>,
>  'scenario': <pytest_bdd.feature.Scenario object at 0x7f8d4f84dd00>,
>  'step': <pytest_bdd.feature.Step object at 0x7f8d4f84d160>,
>  'step_func': <function output_must_be_the_same_as_regular_reporter at 0x7f8d4f725dc0>,
>  'step_func_args': {'test_execution': {'gherkin': <RunResult ret=ExitCode.OK len(stdout.lines)=7 len(stderr.lines)=0 duration=0.03s>,
>                                        'regular': <RunResult ret=ExitCode.OK len(stdout.lines)=9 len(stderr.lines)=0 duration=0.03s>}}}
>         kwargs     = {'test_execution': {'gherkin': <RunResult ret=ExitCode.OK len(stdout.lines)=7 len(stderr.lines)=0 duration=0.03s>,
>                     'regular': <RunResult ret=ExitCode.OK len(stdout.lines)=9 len(stderr.lines)=0 duration=0.03s>}}
>         request    = <FixtureRequest for <Function test_Should_default_output_be_the_same_as_regular_terminal_reporter>>
>         scenario   = <pytest_bdd.feature.Scenario object at 0x7f8d4f84dd00>
>         step       = <pytest_bdd.feature.Step object at 0x7f8d4f84d160>
>         step_func  = <function output_must_be_the_same_as_regular_reporter at 0x7f8d4f725dc0>
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> test_execution = {'gherkin': <RunResult ret=ExitCode.OK len(stdout.lines)=7 len(stderr.lines)=0 duration=0.03s>, 'regular': <RunResult ret=ExitCode.OK len(stdout.lines)=9 len(stderr.lines)=0 duration=0.03s>}
> 
>     @then("output must be formatted the same way as regular one")
>     def output_must_be_the_same_as_regular_reporter(test_execution):
>         reg = test_execution['regular']
>         ghe = test_execution['gherkin']
>         assert reg.ret == 0
>         assert ghe.ret == 0
>         #  last line can be different because of test execution time is printed
>         reg_lines = reg.stdout.lines if reg.stdout.lines[-1] else reg.stdout.lines[:-2]
>         reg_lines[-1] = re.sub(r' \d+\.\d+ ', ' X ', reg_lines[-1])
>         ghe_lines = ghe.stdout.lines if ghe.stdout.lines[-1] else ghe.stdout.lines[:-2]
>         ghe_lines[-1] = re.sub(r' \d+\.\d+ ', ' X ', ghe_lines[-1])
>         for l1, l2 in zip(reg_lines, ghe_lines):
>>           assert l1 == l2
> E           AssertionError: assert '' == ('.                                                                        '\n '[100%]')
> E             - .                                                                        [100%]
> 
> ghe        = <RunResult ret=ExitCode.OK len(stdout.lines)=7 len(stderr.lines)=0 duration=0.03s>
> ghe_lines  = ['============================= test session starts '
>  '==============================',
>  'platform linux -- Python 3.9.1, pytest-6.0.2, py-1.9.0, pluggy-0.13.0',
>  'rootdir: /tmp/pytest-of-christian/pytest-0/scenario_wrapper0',
>  'plugins: bdd-3.2.1',
>  'collected 1 item',
>  '.                                                                        '
>  '[100%]',
>  '============================== 1 passed in 0.01s '
>  '===============================']
> l1         = ''
> l2         = ('.                                                                        '
>  '[100%]')
> reg        = <RunResult ret=ExitCode.OK len(stdout.lines)=9 len(stderr.lines)=0 duration=0.03s>
> reg_lines  = ['============================= test session starts '
>  '==============================',
>  'platform linux -- Python 3.9.1, pytest-6.0.2, py-1.9.0, pluggy-0.13.0',
>  'rootdir: /tmp/pytest-of-christian/pytest-0/scenario_wrapper0',
>  'plugins: bdd-3.2.1',
>  'collected 1 item',
>  '',
>  'test_gherkin.py .                                                        '
>  '[100%]',
>  '',
>  '============================== 1 passed in 0.01s '
>  '===============================']
> test_execution = {'gherkin': <RunResult ret=ExitCode.OK len(stdout.lines)=7 len(stderr.lines)=0 duration=0.03s>,
>  'regular': <RunResult ret=ExitCode.OK len(stdout.lines)=9 len(stderr.lines)=0 duration=0.03s>}
> 
> /<<PKGBUILDDIR>>/tests/feature/test_gherkin_terminal_reporter.py:173: AssertionError
> ----------------------------- Captured stdout call -----------------------------
> ============================= test session starts ==============================
> platform linux -- Python 3.9.1, pytest-6.0.2, py-1.9.0, pluggy-0.13.0
> rootdir: /tmp/pytest-of-christian/pytest-0/scenario_wrapper0
> plugins: bdd-3.2.1
> collected 1 item
> 
> test_gherkin.py .                                                        [100%]
> 
> ============================== 1 passed in 0.01s ===============================
> ============================= test session starts ==============================
> platform linux -- Python 3.9.1, pytest-6.0.2, py-1.9.0, pluggy-0.13.0
> rootdir: /tmp/pytest-of-christian/pytest-0/scenario_wrapper0
> plugins: bdd-3.2.1
> collected 1 item
> .                                                                        [100%]
> ============================== 1 passed in 0.01s ===============================
> __________ test_item_collection_does_not_break_on_non_function_items ___________
> 
> testdir = <Testdir local('/tmp/pytest-of-christian/pytest-0/test_item_collection_does_not_break_on_non_function_items0')>
> 
>     def test_item_collection_does_not_break_on_non_function_items(testdir):
>         """Regression test for https://github.com/pytest-dev/pytest-bdd/issues/317"""
>         testdir.makeconftest("""
>         import pytest
>     
>         @pytest.mark.tryfirst
>         def pytest_collection_modifyitems(session, config, items):
>             items[:] = [CustomItem(name=item.name, parent=item.parent) for item in items]
>     
>         class CustomItem(pytest.Item):
>             def runtest(self):
>                 assert True
>         """)
>     
>         testdir.makepyfile("""
>         def test_convert_me_to_custom_item_and_assert_true():
>             assert False
>         """)
>     
>         result = testdir.runpytest()
>>       result.assert_outcomes(passed=1)
> E       AssertionError: assert {'errors': 0,\n 'failed': 0,\n 'passed': 0,\n 'skipped': 0,\n 'xfailed': 0,\n 'xpassed': 0} == {'errors': 0,\n 'failed': 0,\n 'passed': 1,\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': 0} != {'passed': 1}
> E         Full diff:
> E           {
> E            'errors': 0,
> E            'failed': 0,
> E         -  'passed': 1,
> E         ?            ^
> E         +  'passed': 0,
> E         ?            ^
> E            'skipped': 0,
> E            'xfailed': 0,
> E            'xpassed': 0,
> E           }
> 
> result     = <RunResult ret=ExitCode.INTERNAL_ERROR len(stdout.lines)=64 len(stderr.lines)=0 duration=0.03s>
> testdir    = <Testdir local('/tmp/pytest-of-christian/pytest-0/test_item_collection_does_not_break_on_non_function_items0')>
> 
> /<<PKGBUILDDIR>>/tests/test_hooks.py:55: AssertionError
> ----------------------------- Captured stdout call -----------------------------
> ============================= test session starts ==============================
> platform linux -- Python 3.9.1, pytest-6.0.2, py-1.9.0, pluggy-0.13.0
> rootdir: /tmp/pytest-of-christian/pytest-0/test_item_collection_does_not_break_on_non_function_items0
> plugins: bdd-3.2.1
> collected 1 item
> INTERNALERROR> Traceback (most recent call last):
> INTERNALERROR>   File "/usr/lib/python3/dist-packages/_pytest/main.py", line 240, in wrap_session
> INTERNALERROR>     session.exitstatus = doit(config, session) or 0
> INTERNALERROR>   File "/usr/lib/python3/dist-packages/_pytest/main.py", line 295, in _main
> INTERNALERROR>     config.hook.pytest_collection(session=session)
> INTERNALERROR>   File "/usr/lib/python3/dist-packages/pluggy/hooks.py", line 286, in __call__
> INTERNALERROR>     return self._hookexec(self, self.get_hookimpls(), kwargs)
> INTERNALERROR>   File "/usr/lib/python3/dist-packages/pluggy/manager.py", line 92, in _hookexec
> INTERNALERROR>     return self._inner_hookexec(hook, methods, kwargs)
> INTERNALERROR>   File "/usr/lib/python3/dist-packages/pluggy/manager.py", line 335, in traced_hookexec
> INTERNALERROR>     return outcome.get_result()
> INTERNALERROR>   File "/usr/lib/python3/dist-packages/pluggy/callers.py", line 80, in get_result
> INTERNALERROR>     raise ex[1].with_traceback(ex[2])
> INTERNALERROR>   File "/usr/lib/python3/dist-packages/pluggy/callers.py", line 52, in from_call
> INTERNALERROR>     result = func()
> INTERNALERROR>   File "/usr/lib/python3/dist-packages/pluggy/manager.py", line 333, in <lambda>
> INTERNALERROR>     outcome = _Result.from_call(lambda: oldcall(hook, hook_impls, kwargs))
> INTERNALERROR>   File "/usr/lib/python3/dist-packages/pluggy/manager.py", line 83, in <lambda>
> INTERNALERROR>     self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall(
> INTERNALERROR>   File "/usr/lib/python3/dist-packages/pluggy/callers.py", line 208, in _multicall
> INTERNALERROR>     return outcome.get_result()
> INTERNALERROR>   File "/usr/lib/python3/dist-packages/pluggy/callers.py", line 80, in get_result
> INTERNALERROR>     raise ex[1].with_traceback(ex[2])
> INTERNALERROR>   File "/usr/lib/python3/dist-packages/pluggy/callers.py", line 187, in _multicall
> INTERNALERROR>     res = hook_impl.function(*args)
> INTERNALERROR>   File "/usr/lib/python3/dist-packages/_pytest/main.py", line 306, in pytest_collection
> INTERNALERROR>     session.perform_collect()
> INTERNALERROR>   File "/usr/lib/python3/dist-packages/_pytest/main.py", line 518, in perform_collect
> INTERNALERROR>     hook.pytest_collection_modifyitems(
> INTERNALERROR>   File "/usr/lib/python3/dist-packages/pluggy/hooks.py", line 286, in __call__
> INTERNALERROR>     return self._hookexec(self, self.get_hookimpls(), kwargs)
> INTERNALERROR>   File "/usr/lib/python3/dist-packages/pluggy/manager.py", line 92, in _hookexec
> INTERNALERROR>     return self._inner_hookexec(hook, methods, kwargs)
> INTERNALERROR>   File "/usr/lib/python3/dist-packages/pluggy/manager.py", line 335, in traced_hookexec
> INTERNALERROR>     return outcome.get_result()
> INTERNALERROR>   File "/usr/lib/python3/dist-packages/pluggy/callers.py", line 80, in get_result
> INTERNALERROR>     raise ex[1].with_traceback(ex[2])
> INTERNALERROR>   File "/usr/lib/python3/dist-packages/pluggy/callers.py", line 52, in from_call
> INTERNALERROR>     result = func()
> INTERNALERROR>   File "/usr/lib/python3/dist-packages/pluggy/manager.py", line 333, in <lambda>
> INTERNALERROR>     outcome = _Result.from_call(lambda: oldcall(hook, hook_impls, kwargs))
> INTERNALERROR>   File "/usr/lib/python3/dist-packages/pluggy/manager.py", line 83, in <lambda>
> INTERNALERROR>     self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall(
> INTERNALERROR>   File "/usr/lib/python3/dist-packages/pluggy/callers.py", line 208, in _multicall
> INTERNALERROR>     return outcome.get_result()
> INTERNALERROR>   File "/usr/lib/python3/dist-packages/pluggy/callers.py", line 80, in get_result
> INTERNALERROR>     raise ex[1].with_traceback(ex[2])
> INTERNALERROR>   File "/usr/lib/python3/dist-packages/pluggy/callers.py", line 187, in _multicall
> INTERNALERROR>     res = hook_impl.function(*args)
> INTERNALERROR>   File "/tmp/pytest-of-christian/pytest-0/test_item_collection_does_not_break_on_non_function_items0/conftest.py", line 5, in pytest_collection_modifyitems
> INTERNALERROR>     items[:] = [CustomItem(name=item.name, parent=item.parent) for item in items]
> INTERNALERROR>   File "/tmp/pytest-of-christian/pytest-0/test_item_collection_does_not_break_on_non_function_items0/conftest.py", line 5, in <listcomp>
> INTERNALERROR>     items[:] = [CustomItem(name=item.name, parent=item.parent) for item in items]
> INTERNALERROR>   File "/usr/lib/python3/dist-packages/_pytest/nodes.py", line 95, in __call__
> INTERNALERROR>     warnings.warn(NODE_USE_FROM_PARENT.format(name=self.__name__), stacklevel=2)
> INTERNALERROR> pytest.PytestDeprecationWarning: Direct construction of CustomItem has been deprecated, please use CustomItem.from_parent.
> INTERNALERROR> See https://docs.pytest.org/en/stable/deprecations.html#node-construction-changed-to-node-from-parent for more details.
> 
> ============================ no tests ran in 0.01s =============================
> =============================== warnings summary ===============================
> /usr/lib/python3/dist-packages/_pytest/config/__init__.py:1148
>   /usr/lib/python3/dist-packages/_pytest/config/__init__.py:1148: PytestConfigWarning: Unknown config ini key: pep8maxlinelength
>   
>     self._warn_or_fail_if_strict("Unknown config ini key: {}\n".format(key))
> 
> -- Docs: https://docs.pytest.org/en/stable/warnings.html
> =========================== short test summary info ============================
> FAILED tests/feature/test_gherkin_terminal_reporter.py::test_Should_default_output_be_the_same_as_regular_terminal_reporter
> FAILED tests/test_hooks.py::test_item_collection_does_not_break_on_non_function_items
> =================== 2 failed, 150 passed, 1 warning in 3.84s ===================
> E: pybuild pybuild:353: test: plugin custom failed with: exit code=1: python3.9 -m pytest
> dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p 3.9 --system=custom "--test-args={interpreter} -m pytest" returned exit code 13
> make[1]: *** [debian/rules:11: override_dh_auto_test] Error 25
> make: *** [debian/rules:6: binary] Error 2
> dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2
> make[1]: Leaving directory '/<<PKGBUILDDIR>>'



More information about the Python-modules-team mailing list