将标签从CLI传递到Pytest-bdd并执行特定方案

时间:2019-06-06 20:53:12

标签: python-3.x python-requests pytest fixtures

要从CLI传递并在conftest.py中解释的标签(烟/回归),以执行满足标签要求的方案。

我查看了pytest-bdd文档here,但找不到连接。

方案大纲具有:(因为python装饰器可以堆叠)

@pytest.mark.smoke
Scenario Outline: "VALID" Test

@pytest.mark.smoke
@pytest.mark.regression
  Scenario Outline: "INVALID" Test

@pytest.mark.regression
  Scenario Outline: "MIXED" Test

conftest.py

def pytest_bdd_apply_tag(tag, function):    
    if 'smoke' not in tag:  #what should I use to take values from CLI and execute those
        marker = pytest.mark.skip # skips scenario where 'smoke' is not marked
        marker(function)
        return True
    return None

以上conftest.py中的代码将跳过所有情况。 CLI输入:

pytest --env='qa' -m 'smoke'

其中pytest_addoption用于--env='qa'pytest_bdd_apply_tag用于-m

当我通过烟雾时,我们只想执行标记有烟雾(有效和无效)的方案;通过传递回归时标记为回归(INVALID&MIXED)的场景,当我通过-m选项不传递CLI中的任何参数时显示默认烟雾。

1 个答案:

答案 0 :(得分:0)

我不好,我想知道我是如何被pytest标记误导了文档中提到的场景标记行。

我对功能文件所做的更改是

@smoke
Scenario Outline: "VALID" Test

@smoke @regression
  Scenario Outline: "INVALID" Test

@regression
  Scenario Outline: "MIXED" Test

我从conftest.py中删除了pytest_bdd_apply_tag方法。

在命令行中提供此功能对我有用

pytest -m "regression" --env="uat"