一、简介

  pytest+allure+jenkins进行接口测试、生成测试报告、结合jenkins进行集成。

  pytest是python的一种单元测试框架,与python自带的unittest测试框架类似,但是比unittest框架使用起来更简洁,效率更高

  allure-pytest是python的一个第三方库。用于连接pytest和allure,使它们可以配合在一起使用。

  allure-pytest基于pytest的原始执行结果生成适用于allure的json格式结果。该json格式结果可以用于后续适用allure生成html结果。

二、安装  

  1、安装pytest,命令行或终端中输入

 pip install pytest

  2、安装allure-pytest,安装成功

 pip install allure-pytest

  allure-pytest安装成功后截图如下。

  3、下载安装JDK

  官方下载:https://www.oracle.com/java/technologies/javase-jdk11-downloads.html

  安装与配置不作阐述请谅解  

  4、下载安装Jenkins

  官方下载:https://www.jenkins.io/

  安装与配置不作阐述请谅解

三、下载Allure并配置

  下载allure并配置

  1、allure官网下载:https://github.com/allure-framework/allure2/releases

  如下图所示

  2、allure2下载下来是一个zip的压缩包,我们要解压至自己的文件目录下(可解压放至项目的测试用例下或python安装目录下),自己可找到文件即可。

  3、打开allure2目录,找到bin目录,复制bin文件目录, 然后进行环境变量的配置,设置环境变量的目的就是让系统无论在哪个目录下都可以运行allure2。

  4、环境变量设置:(桌面——我的电脑——右键属性——高级系统配置——环境变量——系统变量——Path——编辑环境变量——把我们上面复制的目录路径新增至环境变量中即可)

  设置环境变量,如下图所示。

  5、配置好后,打开cmd终端,输入allure,出现以下帮助文档,就说明配置成功了。

四、Allure装饰器描述

  Allure装饰器

五、Pytest+Allure的应用

  上述我们讲了一些理论的知识,下面我们就来实战练习一下吧。进一步理解Pytest+allure如何结合应用的。

  1、新建testcase文件夹,用来存放测试用例,新建test_Demo.py文件,作为pytest的具体测试用例文件。在test_Demo.py文件中输入以下代码。

 # test_Demo.py
# Creator:wuwei
# Date:2020-06-09 import pytest
import requests
import allure
import sys
sys.dont_write_bytecode = True @allure.epic('测试描述'.center(30, '*'))
@allure.feature('测试模块')
@allure.suite('测试套件')
class TestPytestOne():
@allure.story('用户故事描述:用例一')
@allure.title('测试标题:用例一')
@allure.description('测试用例描述:用例一')
@allure.testcase('测试用例地址:https://www.baidu.com/')
@allure.tag('测试用例标签:用例一')
def test_one(self):
print('执行第一个用例')
assert 1 == 1 @allure.story('用户故事描述:用例二')
@allure.title('测试标题:用例二')
@allure.description('测试用例描述:用例二')
@allure.testcase('测试用例地址:https://www.sogou.com/')
@allure.tag('测试用例标签:用例二')
def test_two(self,action):
print('执行第二个用例')
assert True == True # pytest运行
if __name__ == "__main__":
pytest.main(['-s', '-v', 'test_Demo.py', '-q', '--alluredir', '../reports'])

  2、我们再来创建一个conftest.py,conftest用来共享数据及不同层次之间共享使用的文件,测试用例的前置和后置中一般都可以用到的。

 # conftest.py
# Creator:wuwei
# Date:2020-06-09 import pytest
import sys
sys.dont_write_bytecode = True @pytest.fixture()
def action():
print("测试用例开始".center(30, '*'))
yield
print("测试用例结束".center(30, '*'))

  3、运行test_Demo.py文件,test_Demo文件中已经pytest+allure的结合,可查看allure的运行结果,可看出在根目录中生成了一个reports文件夹,其中生成了测试报告的json文件,这里面的json文件可通过allure生成html的测试报告。
  运行test_Demo.py,终端显示如下图所示。

  生成的Json格式的测试报告,如下图所示。

  4、使用allure将json文件生成html的测试报告,定位至项目文件根目录下,运行以下命令,会在项目根目录下生成一个名为allure_reports的文件夹,用来存放html测试报告。命令下如所示。

 allure generate reports -o allure_reports/

  成功运行allure,结果如下图所示。

  项目根目录下的allure_reports文件,存放的是allure生成的测试报告。可看出文件下有一个HTML文件,可通过Python的编辑器Pycharm来打开该HTML文件(测试报告),或可通过allure命令来打开该HTML,展示HTML测试报告。如下所示。

  测试报告文件,HTML测试报告如下。

  allure命令打开HTML测试报告。命令如下所示。

 allure open allure_reports/

  如下图所示。

  打开生成的HTML测试报告如下图所示。

六、Pytest+Allure+Jenkins的应用

  1、Jenkins插件网站上下载allure插件最新版本:

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

  2、Jenkins的安装我已经在Postman+Newman+Git+Jenkins的篇章中讲过了,没看小伙伴可以看一下那篇文章。确认Jenkins服务是否开启。确认开启后,在浏览器中输入:http://localhost:8080/,进入Jenkins配置页面。

  3、http://localhost:8080/,登录Jenkins的页面,在管理Jenkins——插件管理——高级中找到上传插件。将(1)步骤中下载的.hpi的文件上传至jenkins上。

  上传安装好的allure-jenkins-plugin的插件,安装完成并成功,是蓝色圆点显示,因我已经安装过一次,会提示已经安装,重启Jenkins即可生效。(注意:不是关闭浏览器重新打开,而是重启Jenkins服务)

  4、全局变量中配置allure路径与JDK的路径,

  配置JDK安装的路径,如下图所示。

  配置allure安装的路径,如下图所示。

  5、新建Item,配置构建后的allure测试报告生成。这里配置Pytest执行完成之后,生成的allure文件所在的目录位置。

  项目中生成allure的json测试报告的位置。需与下面构建后操作中的Results的Path文件一致。

  构建后操作的allure生成测试报告的配置,如下图所示

  6、配置构建命令。就是上述在cmd中运行项目时的命令。如下图所示。

注意:运行后发现有报错。“Build step 'Execute Windows batch command' marked build as failure”,解决方案,在运行项目的命令后添加exit 0。如下图所示。

  7、修改运行命令后我们再来运行一下。我们可发现运行后,allure里面没任务数据。因为我们还没设置运行的项目路径。设置工作空间,打开工作空间目录,将我们的项目复制到jenkins的工作目录中。

  我们可将代码传至GitHub上,在Jenkins中设置相关Github项目的配置,也可进行Jenkins部署。我在Postman+Newman+Git+Jenkins这篇博客里就应用到了。有兴趣的可参考看看这篇Jenkins如何Git项目。在这里我们使用本地项目来部署。

  测试报告无数据因为工作空间里面没有项目配置。

  复制项目至Jenkins工作空间的目录中。

  8、添加项目后,我们再运行一下,蓝点则为运行成功,可看到后面已经生成了allure的测试报告了。可直接点击后面的alluree图标跳转至HTML的测试报告。如下图所示。

  allure生成的HTML测试报告

八、总结

  上述我们聊了下pytest+allure+jenkins如何结合集成一起使用的,本地启动jenkins,运行项目,调用allure生成测试报告。也简单的做了一个小Demo。后期我将结合Requests接口测试和seleniumWeb测试应用至具体项目中。

Pytest单元测试框架——Pytest+Allure+Jenkins的应用的更多相关文章

  1. Pytest单元测试框架-Pytest环境安装

    unittest是python自带的单元测试框架,它封装好了一些校验返回的结果方法和一些用例执行前的初始化操作,使得单元测试易于开展,因为它的易用性,很多同学也拿它来做功能测试和接口测试,只需简单开发 ...

  2. Pytest单元测试框架:插件-allure-pytest环境搭建并在本地生成一个测试报告

    之前写了allure-pytest的官方文档啃的内容,有些交流的朋友,实践起来没什么头绪,所以就有了这篇文章,也给自己填个坑 第一步:搭建Allure.JDK环境 1. 搭建JDK环境 不装jdk你会 ...

  3. Pytest单元测试框架-测试用例运行规则

    1.Pytest测试用例运行规则 在pytest单元测试框架下面执行用例,需要满足以下几个特点: 1. 文件名以test_*.py开头或者*_test.py 2. 测试类.测试函数以test开头 3. ...

  4. Pytest单元测试框架之简单操作示例

    前言: Pytest是第三方单元格测试框架,更加简单,灵活,而且提供了更多丰富的扩展: Pytest与UnitTest框架的区别 UnitTest测试用例执行顺序是依照ascii码执行,而Pytest ...

  5. 【Pytest】python单元测试框架pytest简介

    1.Pytest介绍 pytest是python的一种单元测试框架,与python自带的unittest测试框架类似,但是比unittest框架使用起来更简洁,效率更高.根据pytest的官方网站介绍 ...

  6. Pytest 单元测试框架

    1.pytest 是 python 的第三方单元测试框架,比自带 unittest 更简洁和高效 2.安装 pytest pip install pytest 3.验证 pytest 是否安装成功 p ...

  7. Pytest单元测试框架-学习

    pytest: Python的一个单元测试框架,基于UnitTest二次开发,语法上更加简洁,可以用来做Python开发项目的单元测试,UI自动化.接口自动化测试等,有很多的插件访问Pytest插件汇 ...

  8. python单元测试框架pytest

    首先祝大家国庆节日快乐,这个假期因为我老婆要考注会,我也跟着天天去图书馆学了几天,学习的感觉还是非常不错的,这是一篇总结. 这篇博客准备讲解一下pytest测试框架,这个框架是当前最流行的python ...

  9. Python单元测试框架pytest常用测试报告类型

    先前博客有介绍pytest测试框架的安装及使用,现在来聊聊pytest可以生成哪些测试报告 1.allure测试报告 关于allure报告参见先前的一篇博文:https://www.cnblogs.c ...

随机推荐

  1. React:Composition

    在日常的UI构建中,经常会遇到一种情况:组件本身更多是作为一个容器,它所包含的内容可能是动态的.未预先定义的.这时候它的内容取决另一个组件或外部的输入.比如弹层. props.children: Re ...

  2. python中的基础坑

    v = [lambda :x for x in range(10)] print(v) #[lambda :x,lambda :x....]10个匿名函数 print(v[0]) #lambda :x ...

  3. 二、$CSS部分

    1.css sprite是什么,有什么优缺点 概念:将多个小图片拼接到一个图片中.通过background-position和元素尺寸调节需要显示的背景图案. 优点: 减少HTTP请求数,极大地提高页 ...

  4. GO 使用Webhook 实现github 自动化部署

    通常大家开发大部分是本地git push 提交,服务器上git pull 手动更新.git 可以使用webhook实现自动部署.webhook是仓库平台的一个钩子事件,通过hook 钩子监听代码,回调 ...

  5. vue滑动位移动画

    需要用到css3,vue过度 在网上找了很久很少的资料,自己摸索了一会看了官方文档,毕竟环境不同,需要的效果不同,耽误了很久 鼠标放上某一个就会从下方弹出层

  6. mysql中的联合查询(内联、左联、外联、右联、全联)

    转  https://www.cnblogs.com/withscorpion/p/9454490.html 联合查询效率较高,举例子来说明联合查询:内联inner join .左联left oute ...

  7. 像宝石一样的Java原子类

    十五年前,多处理器系统是高度专业化的系统,通常耗资数十万美元(其中大多数具有两到四个处理器). 如今,多处理器系统既便宜又丰富,几乎主流的微处理器都内置了对多处理器的支持,很多能够支持数十或数百个处理 ...

  8. 剑指Offer之二进制中1的个数

    题目描述 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示.     解法1:使用Integer.toBinanryString()返回int变量的二进制表示的字符串. [在Intege ...

  9. Vue 百度地图显示规划路线

    Vue 百度地图显示规划路线 1.首选引入相应的文件(建议单页面引入)(如有问题找上一篇博客园) 2.区别就是需要多引入几根不同的文件 import { BaiduMap, BmScale, BmGe ...

  10. 附件1:setTimeout与闭包

    我在详细图解作用域链与闭包一文中的结尾留下了一个关于setTimeout与循环闭包的思考题. 利用闭包,修改下面的代码,让循环输出的结果依次为1, 2, 3, 4, 5 for (var i=1; i ...