web自动化--pytest+allure+jenkins+发送邮件

pytest是什么

pytest是python的一款测试框架,拥有unittest的功能并比它更丰富。

allure是什么

有非常多的优秀的测试框架,但却是有非常少优秀的报告工具可以展示非常清楚的用例执行过程和结果。

allure是一款开源的,专门用来展示测试结果的工具,目的是希望团队内部每一个人都可以看到非常清楚的测试结果。

allure可以与非常多的著名测试框架做集成。

 像java语言,可以与junit4,junit5,TestNG测试框架集成。
 python语言,可以与pytest,behave,nose测试框架集成。

allure会将测试用例的执行数据保存到xml文件当中,再利用allure的命令行将文件转换成html形式呈现出来。

allure的官方地址:http://allure.qatools.ru/

安装allure命令行

官网提供了每个平台的,命令行安装方式。

以下是手动安装方式,适用于各平台:

1、从Maven Center下载最新的安装包:

http://repo.maven.apache.org/maven2/io/qameta/allure/allure-commandline/
从百度网盘下载:(链接:https://pan.baidu.com/s/1jCSz9RHSF8eq5d7AYCgo8g&shfl=sharepset
提取码:ffcl
复制这段内容后打开百度网盘手机App,操作更方便哦)

目前是2.13.0的版本。

2、将包解压到任何一个目录。建议不要选C盘或者路径很深的。比如D:\allure-command-2.12.1

3、跳转到解压后的bin目录下面,windows下执行allure.bat。其它平台执行allure.

4、配置allure的环境变量:

allure与pytest的集成

在allure安装完成之后,需要与pytest集成,能够在pytest运行完成之后,生成allure的文件 。

1、安装pytest的allure支撑插件。

pip命令行:pip install allure-pytest

2、在执行pytest命令时,添加allure命令参数:—alluredir=Outputs/allure (相对于pytest命令所在目录的测试报告目录)

if __name__ == '__main__':
    pytest.main(["-s", "-v", r"--alluredir=Outputs/allure_reports"])
  • pytest生成其他报告的命令html xml log格式
  • 安装 pytest-html插件

    CMD命令:pip install -i https://pypi.douban.com/simple pytest-html
    1、JunitXML
    命令 --junitxml=path
    2、result log
    命令:--resultlog=report\log.txt
    3、Html
    命令:--html=report\test_one_func.html(相对路径) 绝对路径不行

  • 生成 pytest-hmtl报告和allure报告文件 封装了1个函数方便调用
  • def pytestmain(file_path, report_type="html", mark="", tag_name="", report_type1=("html", "resultlog", "junitxml")):
        :param file_path:报告的相对路径
        :param report_type:要输出的报告类型 html resultlog junitxml
        :param report_type1:要输出的报告类型 html resultlog junitxml 给type类型做参考的值
        :param tag_name:打标记的标签名 或者用例关键字名
        :param mark: -m 或者 -k
        :return:
        if os.path.splitext(file_path)[1][1:] in report_type:
            pytest.main(["--reruns", "2", "--reruns-delay", "5", r"--{}={}".format(report_type, file_path),
                         r"--alluredir=Outputs\allure_reports", mark, tag_name, "-s", "-v"])
        else:
            do_log.error("你的文件相对路径文件和你的报告输出格式不一致【{}】==【{}】".
                         format(os.path.splitext(file_path)[1][1:], report_type))
    

    3、等待pytest执行完所有的测试用例,在Outputs/allure_reports下会生成一些文件。

    4、生成html格式的allure报告

    命令:allure generate 测试结果文件目录 -o 输入html文件的目录 --clean
    --clean表示每次执行该命令行都先清除输入html文件的目录下的文件
    allure generate OutPuts/allure_reports -o OutPuts/allure_html --clean

    allure与jenkins的集成

    allure与jenkins集成之后,可以直接在jenkins上,直接查看到上图的allure结果。

    并因为jenkins的构建记录都存在,所以可以看到历史构建曲线图,用例数的变化、通过率的变化、耗时的变化等均可查看到。

    集成步骤如下:

    1、在jenkins上安装allure插件。

    Step1: 去jenkins插件网站上下载allure插件最新版本:

    http://mirrors.jenkins-ci.org/plugins/allure-jenkins-plugin/

  • 百度网盘下载
    链接:https://pan.baidu.com/s/10dDqlCaT10dUf1Vkb079rw
    提取码:8mbf
    复制这段内容后打开百度网盘手机App,操作更方便哦
  • Step2: 打开jenkins,在系统管理 —> 插件管理 —>Advanced —> Upload Plugin

    上传.phi格式的插件,点击[上传]操作。

    <!DOCTYPE html>
    <html lang="en">
    <body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4" offset="0">
        <table width="95%" cellpadding="0" cellspacing="0"  style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">
                本邮件由系统自动发出,无需回复!<br/>
                各位同事,大家好,以下为${PROJECT_NAME }项目构建信息</br>
                <h1><center><font color="red">allure报告在线查看or下载allure-report.zip用firefox离线查看,测试用例见附件</font><center></h1>
                <td><br/>
                <b><font color="#0B610B">项目描述:${JOB_DESCRIPTION}<br></font></b>
                <hr size="2" width="100%" align="center" /></td>
                        <li>项目名称 : ${PROJECT_NAME}</li>
                        <li>构建编号 : 第${BUILD_NUMBER}次构建</li>
                        <li>SVN 版本: ${SVN_REVISION}</li>
                        <li>触发原因: ${CAUSE}</li>
                        <li>构建状态: ${BUILD_STATUS}</li>
                        <li>构建日志: <a href="${BUILD_URL}console">${BUILD_URL}console</a></li>
                        <li>构建  Url : <a href="${BUILD_URL}">${BUILD_URL}</a></li>
                        <li>工作目录 : <a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li>
                        <li>项目  Url : <a href="${PROJECT_URL}">${PROJECT_URL}</a></li>
                        <li>系统allure测试报告:<a HREF="${PROJECT_URL}${BUILD_NUMBER}/allure">${PROJECT_URL}${BUILD_NUMBER}/allure</a><li>
                <b><font color="#0B610B">构建日志 (最后 100行):</font></b>
            <hr size="2" width="100%" align="center" />
                    <textarea cols="80" rows="30" readonly="readonly" style="font-family: Courier New">${BUILD_LOG, maxLines=100}</textarea>
            ${JELLY_SCRIPT}
        </table>
    </body>
    </html>
    
    项目 构建后操作修改