gpt4 book ai didi

python - pytest-bdd : Importing common steps

转载 作者:行者123 更新时间:2023-12-04 12:37:35 25 4
gpt4 key购买 nike

编辑:我不再从事这个项目,但我会保持这个问题开放,直到得到回答,以防它对任何人有用。

我正在实现 pytest-bdd,我正在尝试从名为 ui_shared.py 的不同文件导入使用步骤。

目前我的目录结构如下:

proj/lib/ui_file.py
proj/lib/ui_shared.py
proj/tests/test_file.py
proj/features/file.feature

Pytest-bdd 能够识别来自 ui_shared.py 的步骤并执行测试,只要 ui_file.py 导入:
from ui_shared import *

但我想避免使用 import *.

我试过 import ui_shared.pyfrom ui_shared.py import common_step ,其中 common_step是我想导入的步骤函数,我收到错误消息:
StepDefinitionNotFoundError: Step definition is not found: Given "common function".

我发现了一个相关的问题:
Behave: How to import steps from another file?
以及其他一些,其中大部分说将步骤导入到通用步骤文件中, ui_shared.py就我而言,我已经这样做了。

这是 ui_shared.py的代码:
#!/usr/bin/python

import pytest
from pytest_bdd import (
scenario,
given,
when,
then
)

@pytest.fixture(scope="function")
def context():
return{}

@given('common step')
def common_step(input):
#some method

以下是其他相关代码:

file.feature :
Scenario Outline: ui_file
Given common step
And another given step
When some step
Then last step

test_file.py :
#!/usr/bin/python

@pytest.fixture
def pytestbdd_strict_gherkin():
return False

@scenario('proj/features/file.feature', 'ui_file')
def test_ui_file():
"""ui_file"""

而在 ui_file.py :
import pytest
from pytest_bdd import (
scenario,
given,
when,
then
)

from ui_shared import * #This is what I am trying to change

@given('another given step')
def another_given_step(input)
#some method

@when('some step')
def some_step(input)
#some method

@then('last step')
def last_step(input)
#some method

以上应该按原样工作,但如果更改导入方法,则 pytest 将失败并显示 E StepDefinitionNotFoundError .

我正在寻找的是一种导入 ui_shared.py 中定义的所有名称的方法。除了我没有使用的方法。

基本上,我如何使用 from file import 导入没有 * 并允许我的 ui_file.py使用来自 ui_shared.py 的常用步骤?

最佳答案

在您的 conftest.py 中添加以下几行

pytest_plugins = [
"lib.ui_shared"
]
这样所有的设备或 pytest-bdd 都会进入 ui_shared.py将可用于所有其他文件,就像它在 conftest.py 中一样
注意
lib 必须是一个包,这意味着应该有一个 __init__.py lib文件夹内的文件

关于python - pytest-bdd : Importing common steps,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52265620/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com