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
如果您使用装饰器,您可以指定可选的run和skipif参数。如果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=False在jira.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
使用
创建一个名为 jira.cfg 的配置文件,并将其放置在以下位置之一。
/etc/jira.cfg
~/jira.cfg
tests_root_dir/jira.cfg
tests_test_dir/jira.cfg
配置文件将按照上述顺序加载。这意味着首先加载全局配置中的选项,然后可能被用户家目录中的选项覆盖,最后可能被测试根目录中的选项覆盖。
下面是一个示例,您可以将其用作模板,并根据需要更新它。
[DEFAULT] url =
https://jira.atlassian.comusername =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
使用jira标记和问题ID标记您的测试。
@pytest.mark.jira('issue_id')
您还可以将Jira ID放入测试用例的文档字符串中。
运行py.test并带有jira选项以启用插件。
py.test --jira
测试
要执行测试,请运行
$ tox
项目详情
pytest-jira-0.3.21.zip 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ca0dd9d13a915849507bc00957c8eae6905f9774434f1e4827e7bc6ae937f29e |
|
MD5 | e23dac4e0e0428911c89231c7cf1fb7f |
|
BLAKE2b-256 | f74b61ddccd94c0bea0ca5a710031ca6830059af4ab8f935219433342b8d52d4 |