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的环境变量:

image.png

image.png

5、检查是否安装成功 allure --version


image.png

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(相对路径) 绝对路径不行

image.png
  • 生成 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下会生成一些文件。

image.png

在cmd命令行当中,执行:allure serve 测试结果文件目录,就会生成漂亮的html报告。

image.png
image

4、生成html格式的allure报告

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

image.png
image.png

allure与jenkins的集成

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

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

集成步骤如下:

1、在jenkins上安装allure插件。

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

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

Step2: 打开jenkins,在系统管理 —> 插件管理 —>Advanced —> Upload Plugin

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


image.png
image.png
  • 安装插件成功之后 重启下jenkins服务

2、在jenkins 全局工具当中配置allure命令行。

在 系统管理 —> 全局工具配置 —> 当中做以下配置(allure和jdk),配置完并保存:
点击 Global 进入全局工具配置


image.png
image.png
image.png

以上基本配置好了,我们接下来要创建项目了

创建项目配置

  1. 创建一个项目 选择 自由模式


    image.png

2.因为是在本地配置 所以选

image.png

  1. 构建 因为在本地所以选择windows


    image.png
  • 这里需要注意下 :我们需要在D:\software\jenkins\workspace目录下创建一个和我们job项目名相同的文件件并且把项目代码复制进去


    image.png
  • 用python解释器的目录 去执行会稳定的多,不知道解释器目录 CMD 输入 where python


    image.png

4.构建后设置

  • 选择 allure report
image.png
image.png
  • 如果不想把代码复制到workspace创建的job项目里面,也可以自定义 但是需要job名跟执行的项目文件名一致。


    image.png
  • 2)如果是放在git或者svn上面的代码,那么你就不需要指定工作空间

jenkins 踩坑

selenium.common.exceptions.WebDriverException: Message: unknown error: cannot find Chrome binary
image.png

这个错误是说明,在Jenkins上执行用例时,没找到浏览器所以在我们代码中添加(浏览器的绝对安装路径)

解决办法
1.找到chrome的安装位置,并且将chromedriver.exe浏览器驱动也放到这个位置

image.png
  1. 修改代码
  • 先在constants文件家一个chromedriver的绝对路径,这里有点不好 一旦换电脑这里就得改


    image.png
  • 在conftest.py文件给实例化驱动器传上上面那个参数即可,conftest.py是处理前置 后置


    image.png
  • 点击 build Now 立即构建


    image.png

    点击 allure Report 就可以看报告了


    image.png

生成报告然后发送邮箱

1.安装插件

系统管理-插件管理-安装Email Extension插件
2.配置发送邮件信息

  • 系统管理-系统设置-Jenkins Location,这里的管理员地址要和发送人的邮箱地址一样,要不然会有问题


    image.png
  • 系统管理-系统设置-Extended E-mail Notification


    image.png
image.png

邮件标题:

【构建通知】:$PROJECT_NAME - 构建结果:$BUILD_STATUS-构建次数-${BUILD_NUMBER}

html代码

<!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">
        <tr>
            本邮件由系统自动发出,无需回复!<br/>
            各位同事,大家好,以下为${PROJECT_NAME }项目构建信息</br>
            <h1><center><font color="red">allure报告在线查看or下载allure-report.zip用firefox离线查看,测试用例见附件</font><center></h1>
        </tr>
        <tr>
            <td><br/>
            <b><font color="#0B610B">项目描述:${JOB_DESCRIPTION}<br></font></b>
            <hr size="2" width="100%" align="center" /></td>
        </tr>
        <tr>
            <td>
                <ul>
                    <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>
                </ul>
    </td>
        <tr>
         <td>
            <b><font color="#0B610B">构建日志 (最后 100行):</font></b>
        <hr size="2" width="100%" align="center" />
            </td>
        </tr>
        <tr>
           <td>
                <textarea cols="80" rows="30" readonly="readonly" style="font-family: Courier New">${BUILD_LOG, maxLines=100}</textarea>
            </td>
        </tr>
        ${JELLY_SCRIPT}
    </table>
</body>
</html>
项目 构建后操作修改
image.png
image.png

-- 修改一下构建命令 执行main.py文件 再让他生成一个html报告作为附件发送出去


image.png

邮件样式

image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343