jenkins集成pytest-allure统计测试用例

jenkins集成pytest-allure统计测试用例

  • 安装allure2命令行工具
  • 安装pytest,python-allure
  • 本地测试
  • jenkins集成
  • 查看结果

allure官方github:https://github.com/allure-framework/allure2
release下载地址:https://github.com/allure-framework/allure2/releases

安装allure2命令行工具

#下载
wget https://github.com/allure-framework/allure2/archive/2.13.3.tar.gz
#解压
tar xvf 2.13.3.tar.gz
#最新版,官方仓库不支持打包,所以需要自己打包
#注意本地环境要先装好jdk 和 gradlew, 打包较慢
cd allure2-2.13.3 && ./gradlew build
#打包后执行文件路径
./allure-commandline/build/install/allure-commandline/bin/
#加到自己的bin环境
vim /etc/profile
export ALLURE_HOME=......./allure/allure2-2.13.3/allure-commandline/build/install/allure-commandline/bin
export PATH=$PATH:$ALLURE_HOME
#生效
source /etc/profile
-------
#也可以用软连接
ln -s ....../allure2-2.13.3/allure-commandline/build/install/allure-commandline/bin/allure /usr/bin/allure
-------
#测试是否成功
allure version

安装pytest,python-allure

#python2
python2 -m pip install pytest allure-pytest
#python3
python3 -m pip install pytest allure-pytest
  • 编写测试用例
vim ./demo.py
---------------
# coding:utf-8

import pytest
import allure


# 测试函数
@allure.step("字符串相加:{0},{1}")     # 测试步骤,可通过format机制自动获取函数参数
def str_add(str1, str2):
    print "hello"
    if not isinstance(str1, str):
        return "%s is not a string" % str1
    if not isinstance(str2, str):
        return "%s is not a string" % str2
    return str1 + str2


@allure.severity("critical")               # 优先级,包含blocker, critical, normal, minor, trivial 几个不同的等级
@allure.feature("测试模块_demo1")           # 功能块,feature功能分块时比story大,即同时存在feature和story时,feature为父节点
@allure.story("测试模块_demo2")             # 功能块,具有相同feature或story的用例将规整到相同模块下,执行时可用于筛选
@allure.issue("BUG号:123")                 # 问题表识,关联标识已有的问题,可为一个url链接地址
@allure.testcase("用例名:测试字符串相等")      # 用例标识,关联标识用例,可为一个url链接地址
@pytest.mark.parametrize("para_one, para_two",              # 用例参数
                         [("hello world", "hello world"),   # 用例参数的参数化数据
                          (4, 4),
                          ("中文", "中文")],
                         ids=["test ASCII string",          # 对应用例参数化数据的用例名
                              "test digital string",
                              "test unicode string"])
def test_case_example(para_one, para_two):
    """用例描述:测试字符串相等
    :param para_one: 参数1
    :param para_two: 参数2
    """

    # 获取参数
    paras = vars()
    # 报告中的环境参数,可用于必要环境参数的说明,相同的参数以后者为准
    allure.environment(host="172.6.12.27", test_vars=paras)
    # 关联的资料信息, 可在报告中记录保存必要的相关信息
    allure.attach("用例参数", "{0}".format(paras))
    # 调用测试函数
    res = str_add(para_one, para_two)
    # 对必要的测试中间结果数据做备份
    allure.attach("str_add返回结果", "{0}".format(res))
    # 测试步骤,对必要的测试过程加以说明
    with pytest.allure.step("测试步骤2,结果校验 {0} == {1}".format(res, para_one+para_two)):
        assert res == para_one+para_two, res


if __name__ == '__main__':
    # 执行,指定执行测试模块_demo1, 测试模块_demo2两个模块,同时指定执行的用例优先级为critical,blocker
    pytest.main(['--allure_stories=测试模块_demo1, 测试模块_demo2', '--allure_severities=critical, blocker'])

本地测试

python3/2 -m pytest ./demo.py --alluredir allure-results
#渲染到网页
allure server allure-results

jenkins集成

  • 安装插件
    jenkins集成pytest-allure统计测试用例_第1张图片
  • 全局工具
    jenkins集成pytest-allure统计测试用例_第2张图片
  • pipeline写法
.....
allure includeProperties: false, jdk: '', report: '', results: [[path: "${WORKSPACE_BRA}/allure-report"]]
.....
//publishHTML插件写法
....
publishHTML([reportName  : 'Demo Report', reportDir: 'build/allure-results', reportFiles: 'index.html',
              reportTitles: '', allowMissing: false, alwaysLinkToLastBuild: false, keepAll: false])
....

查看结果

jenkins集成pytest-allure统计测试用例_第3张图片
jenkins集成pytest-allure统计测试用例_第4张图片

  • 学习

https://blog.csdn.net/liuchunming033/article/details/79624474

你可能感兴趣的:(操作记录,软件测试,jenkins)