跳转到主要内容

py.test JIRA集成插件,使用标记

项目描述

简介

A pytest 插件,用于JIRA集成。

此插件将测试与JIRA工单链接。此插件的行为类似于 pytest-bugzilla 插件。

此插件不会关闭JIRA工单或创建工单。它只是允许您将测试链接到现有的工单。

请自由通过Fork和提交拉取请求或通过提交功能请求或问题到 issues 来贡献。

测试结果

  • 如果测试 未解决

    • 并且 run=False,则测试 被跳过

    • 如果run=True或未设置,则执行测试,并根据它结果为未通过(例如,意外通过)或未通过(例如,预期失败)。未通过结果的解释取决于pytest ini文件中的xfail_strict值,即当xfail_strict=true时,未通过结果将导致测试套件失败。有关严格xfail的更多信息,请参阅pytest文档

  • 如果测试已解决

    • 执行测试,并根据它结果为通过失败

  • 如果提供skipif参数…

    • 值为False或返回类似False的值的可调用函数,jira标记行将被忽略

注意:您可以在配置文件中全局设置run参数的默认值(选项run_test_case)或从CLI--jira-do-not-run-test-case设置。默认值为run=True

标记测试

您可以在文档字符串或pytest.mark.jira装饰器中指定jira问题ID。

默认情况下,匹配jira问题ID的正则表达式模式为[A-Z]+-[0-9]+,可以通过--jira-issue-regex=REGEX或通过配置文件中的jira_regex=REGEX来更改。

如果未找到问题ID,也可以通过设置--jira-marker-strategy=STRATEGY或通过配置文件中的marker_strategy=STRATEGY来更改行为。

处理未找到的问题ID的策略

  • open - 问题被视为开放(默认)

  • strict - 抛出异常

  • ignore - 忽略问题ID

  • warn - 写入错误消息并忽略

装饰器中的问题ID

如果您使用装饰器,您可以指定可选的runskipif参数。如果run为false且问题未解决,则测试将被跳过。如果skipif为false,则jira标记行将被忽略。

@pytest.mark.jira("ORG-1382", run=False)
def test_skip(): # will be skipped if unresolved
    assert False

@pytest.mark.jira("ORG-1382")
def test_xfail(): # will run and xfail if unresolved
    assert False

@pytest.mark.jira("ORG-1382", skipif=False)
def test_fail():  # will run and fail as jira marker is ignored
    assert False

使用lambda值作为skipif

您可以使用lambda值作为skipif参数。Lambda函数必须以问题JSON作为输入值并返回类似布尔值。如果任何JIRA ID得到类似False的值,则该问题的标记将被忽略。

@pytest.mark.jira("ORG-1382", skipif=lambda i: 'my component' in i['components'])
def test_fail():  # Test will run if 'my component' is not present in Jira issue's components
    assert False

@pytest.mark.jira("ORG-1382", "ORG-1412", skipif=lambda i: 'to do' == i['status'])
def test_fail():  # Test will run if either of JIRA issue's status differs from 'to do'
    assert False

文档字符串中的问题ID

您可以使用--jira-disable-docs-search参数或通过docs_search=Falsejira.cfg中禁用对文档字符串中问题ID的搜索。

def test_xpass(): # will run and xpass if unresolved
"""issue: ORG-1382"""
    assert True

状态评估

如果问题状态与resolved_statuses匹配,则问题被视为已解决。默认情况下为已解决已关闭

您可以在命令行上设置自己的自定义已解决状态--jira-resolved-statuses,或在配置文件中设置。

如果指定了组件(在命令行或jira.cfg中),只有当问题对于至少一个使用的组件也是开放的,才会将开放的问题视为未解决

如果指定了版本,只有当问题也影响了您的版本时,才会将开放的问题视为未解决。即使问题已关闭,但您的版本受到影响且未为您版本的版本修复,问题也将被视为未解决

如果指定了已修复的解决方案,则已关闭的问题如果它们没有已解决的解决方案,则被视为未解决

固定用法

除了测试标记外,您还可以使用添加的jira_issue固定值。这允许在测试中途而不是仅在测试开始时检查问题状态。固定值返回一个表示问题状态的布尔值。如果未找到问题或jira插件未加载,则返回None

NICE_ANIMALS = ["bird", "cat", "dog"]

def test_stuff(jira_issue):
    animals = ["dog", "cat"]
    for animal in animals:
        if animal == "dog" and jira_issue("ORG-1382") is True:
            print("Issue is still open, cannot check for dogs!")
            continue
        assert animal in NICE_ANIMALS

需求

  • pytest >= 2.2.3

  • requests >= 2.13.0

  • six

  • retry2 >= 0.9.5

  • marshmallow >= 3.2.0

安装

pip install pytest_jira

使用

  1. 创建一个名为 jira.cfg 的配置文件,并将其放置在以下位置之一。

    • /etc/jira.cfg

    • ~/jira.cfg

    • tests_root_dir/jira.cfg

    • tests_test_dir/jira.cfg

    配置文件将按照上述顺序加载。这意味着首先加载全局配置中的选项,然后可能被用户家目录中的选项覆盖,最后可能被测试根目录中的选项覆盖。

    下面是一个示例,您可以将其用作模板,并根据需要更新它。

    [DEFAULT]
    url = https://jira.atlassian.com
    username = USERNAME (or blank for no authentication)
    password = PASSWORD (or blank for no authentication)
    token = TOKEN (either use token or username and password)
    # ssl_verification = True/False
    # version = foo-1.0
    # components = com1,second component,com3
    # strategy = [open|strict|warn|ignore] (dealing with not found issues)
    # docs_search = False (disable searching for issue id in docs)
    # issue_regex = REGEX (replace default `[A-Z]+-[0-9]+` regular expression)
    # resolved_statuses = comma separated list of statuses (closed, resolved)
    # resolved_resolutions = comma separated list of resolutions (done, fixed)
    # run_test_case = True (default value for 'run' parameter)
    # connection_error_strategy [strict|skip|ignore] Choose how to handle connection errors
    # return_jira_metadata = False (return Jira issue with metadata instead of boolean result)

    或者,您可以使用相关环境变量设置url、密码、用户名和令牌字段。

    export PYTEST_JIRA_URL="https://..."
    export PYTEST_JIRA_PASSWORD="FOO"
    export PYTEST_JIRA_USERNAME="BAR"
    export PYTEST_JIRA_TOKEN="TOKEN"

    配置选项也可以通过命令行选项覆盖。要运行所有可用的命令行选项,请执行以下命令。

    py.test --help
  2. 使用jira标记和问题ID标记您的测试。

    @pytest.mark.jira('issue_id')

    您还可以将Jira ID放入测试用例的文档字符串中。

  3. 运行py.test并带有jira选项以启用插件。

    py.test --jira

测试

要执行测试,请运行

$ tox

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分布

pytest-jira-0.3.21.zip (34.2 kB 查看哈希值)

上传时间

由以下机构支持

AWSAWS云计算和安全赞助商DatadogDatadog监控FastlyFastlyCDNGoogleGoogle下载分析MicrosoftMicrosoftPSF赞助商PingdomPingdom监控SentrySentry错误日志StatusPageStatusPage状态页面