【问题标题】:pytest skip test condition depending on environmentpytest 根据环境跳过测试条件
【发布时间】:2021-07-02 08:30:00
【问题描述】:

在我使用 pytest 框架和 conftest.py 的脚本中,我有一个解析器,它从命令行获取环境值,以便测试知道它需要在哪个环境中运行。

def pytest_addoption(parser): # obtiene el valor de CLI    
parser.addoption("--env")

--

@pytest.fixture()
def environment(env):
if env == 'DEV':
    entorno = 'DEV'
elif env == 'TE':
    entorno = 'TE'
elif env == 'PROD':
    entorno = 'PROD'
else:
    entorno = 'UAT'
return entorno

我有一些不应该在 PROD 中运行的测试,有没有办法用 pytest 来做标记或跳过条件来检查 env 变量是否为“PROD”不应该运行? 我想知道是否可以在测试开始运行之前获取环境值,所以我可以在测试顶部添加一个 @pytest.mark.skipif(env=="PROD") 。 我发现的唯一方法是在这样的测试中添加一个 if 条件,但我不认为这是最好的方法:

@pytest.mark.parametrize('policy_number', policy_list)
def test_fnol_vida_fast(self, setUp, environment, request, policy_number):
    try:
        if self.entorno != 'PROD':
            ###################
            Script Script Script
            ###################
        else:
            pytest.skip('Scripts FNOL don't run in PROD')
    except Exception as e:
        self.logger.error("******************* test_fnol_vida_fast (" + str(policy_number) + ") FAILED *******************")
        self.commons.take_screenshot(request.node.name)
        raise e
    finally:
        self.driver.close()
        self.driver.quit()

【问题讨论】:

  • 这完全可行,谢谢。不知道如何选择您的回复作为我的问题的解决方案
  • 遗憾的是无法选择 cmets 作为答案。但是因为我只指出了另一篇帖子,然后投票赞成你在那个帖子上使用的答案:)

标签: python selenium pytest


【解决方案1】:

试试这样的:

import os
import pytest


def requires_env(*envs):
    env = os.environ.get(
        'ENVIRONMENT', 'test'
    )

    envs = envs if isinstance(envs, list) else [*envs]

    return pytest.mark.skipif(
        env not in envs,
        reason=f"Not suitable envrionment {env} for current test"
    )

并像这样使用:

@requires_env("test", "stag")
def test_1():
   assert 1 == 1

非常适合我

顺便说一句,您可以删除将字符串转换为列表并比较环境(如 env == env)的步骤

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-27
    • 1970-01-01
    相关资源
    最近更新 更多