使用alluredir执行测试并在功能部件中使用示例时,allurepytestbdd中出现KeyError错误

2024-10-01 19:27:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用pytest-6.2.4进行测试自动化,并使用插件allure-pytest-bdd-2.8.36、bdd-4.0.2。Python版本是3.6.9

使用标志--alluredir=reports运行pytest时发生KeyError。 测试包含以下功能和示例:

| empty_answer1    | <- variable name
| ---------------- |
| {"playlists":[]} | <- variable value
| {"playlists":[]} | <- variable value

据我所知,控制台输出显示错误发生在格式化过程中:

    @pytest.mark.usefixtures(*function_args)
    def scenario_wrapper(request):
>       _execute_scenario(feature, scenario, request, encoding)

/home/yuliya/.local/lib/python3.6/site-packages/pytest_bdd/scenario.py:177: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/home/yuliya/.local/lib/python3.6/site-packages/pytest_bdd/scenario.py:143: in _execute_scenario
    _execute_step_function(request, scenario, step, step_func)
/home/yuliya/.local/lib/python3.6/site-packages/pytest_bdd/scenario.py:110: in _execute_step_function
    request.config.hook.pytest_bdd_before_step_call(**kw)
/home/yuliya/.local/lib/python3.6/site-packages/pluggy/hooks.py:286: in __call__
    return self._hookexec(self, self.get_hookimpls(), kwargs)
/home/yuliya/.local/lib/python3.6/site-packages/pluggy/manager.py:93: in _hookexec
    return self._inner_hookexec(hook, methods, kwargs)
/home/yuliya/.local/lib/python3.6/site-packages/pluggy/manager.py:87: in <lambda>
    firstresult=hook.spec.opts.get("firstresult") if hook.spec else False,
/home/yuliya/.local/lib/python3.6/site-packages/allure_pytest_bdd/pytest_bdd_listener.py:65: in pytest_bdd_before_step_call
    step_result.name = get_step_name(request.node, step)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

node = <Function test_creating_playlists__responding_to_requests[AUTOTEST-9973991-00 -  0 (9973991\u0410)-\u0421\u0430\u043b\..._number=9973991&route_dir=0&route_type=\u0410&device_type=1&trip_short_name=00&boardNumber=773410446-{"playlists":[]}]>
step = <pytest_bdd.parser.Step object at 0x7f5db6a55198>

    def get_step_name(node, step):
        name = "{step_keyword} {step_name}".format(step_keyword=step.keyword, step_name=step.name)
        if hasattr(node, 'callspec'):
            for key, value in node.callspec.params.items():
                name = name.replace("<{key}>".format(key=key), "<{{{key}}}>".format(key=key))
>               name = name.format(**node.callspec.params)
E               KeyError: '"playlists"'

/home/yuliya/.local/lib/python3.6/site-packages/allure_pytest_bdd/utils.py:15: KeyError

示例类型已通过示例_转换器在python脚本中显式声明,如下所示:

scenarios('../features/requestroutePL.feature', example_converters=dict(locality=str,
                                                                        route=str,
                                                                        trip=str,
                                                                        mmetype=str,
                                                                        statusPL=str,
                                                                        urlwithroute=str,
                                                                        urlwithroute2=str,
                                                                        empty_answer1=str,
                                                                        urlwithroute3=str,
                                                                        empty_answer2=str))

我试着用“,“%”符号替换大括号,并使大括号加倍。这一切都是徒劳的。请帮我解决这件事。我已经没有主意了

唯一使测试通过的是从示例中移除支架。但这一可疑的步骤似乎不是答案。最重要的是,这种行为是不一致的,bcs在另一个测试中的相同构造没有引起任何错误

非常感谢您的帮助


Tags: keynameinpyhomepytestlibpackages

热门问题