JENKINS使用DOCKER运行PYTEST并且出ALLURE报告

背景

最近想做一个简单的pytest 测试,用allure出报告,结果发现网上的方法都是在windows上装jenkins,然后用jenkins跑一个本地的运行环境。这种做法明显很不2019年。于是我决定做一个在jenkins上使用docker运行pytest,然后再出allure报告的文章。

思路

  1. 在一台电脑上安装jenkins,可以参考我的文章https://www.yinyubo.cn/?p=268
  2. 准备python代码,放到git上,jenkins通过git拉取代码。代码中包含Dockerfile,测试用例,requirements.txt
  3. 拉取代码之后,通过Dockerfile产生一个python的镜像,并且在镜像中通过requirements.txt去安装pytest,allure的相关依赖
  4. 通过这个镜像,产生一个容器,容器命令运行pytest,产生测试报告,并且挂载到jenkins服务器上.
  5. (注意,这里为什么要在容器里运行pytest呢?因为如果在Dockerfile里运行pytest,一旦产生测试失败,是会导致jenkins退出shell执行的)
  6. Jenkins通过allure插件读取第4步产生的测试报告。生成allure报告

具体步骤

  1. 第一步忽略。请参考文章https://www.yinyubo.cn/?p=268
  2. 准备python代码。产生Dockerfile,测试用例,requirements.txt,如下图

Dockerfile内容如下:

1

2

3

4

5

FROM python:3.7.3

WORKDIR .

ADD . .

RUN pip install -r requirements.txt

CMD ["pytest", "-q","TestCase/AIMP/Connect/AIMP_Connect_01.py","--alluredir","allure-results"]

requirements.txt内容如下:

1

2

3

4

5

6

7

8

9

10

allure-pytest==2.6.2

allure-python-commons==2.6.2

atomicwrites==1.3.0

attrs==19.1.0

colorama==0.4.1

more-itertools==7.0.0

pluggy==0.9.0

py==1.8.0

pytest==4.4.1

six==1.12.0

测试用例可以如下

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

import pytest

def test_success():

    """this test succeeds"""

    print(1)

    assert True

def test_failure():

    print(2)

    """this test fails"""

    assert False

def test_skip():

    print(3)

    """this test is skipped"""

    pytest.skip('for a reason!')

def test_broken():

    raise Exception('oops')

def test_success2():

    print(4)

    assert True

     3.jenkins配置,这里如何拉取git代码就不写了。这个很简单,主要是构建命令和构建后操作,这里我复制了我的构建命令如下:

1

2

3

name="apitest"

docker build -t $name .

docker run -d --name $name -v $PWD/allure-results:/allure-results $name

效果如图:

    4.运行job,查看allure结果

任何程序错误,以及技术疑问或需要解答的,请添加

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/546963.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

配置设备作为DHCP 服务器(基于接口地址池)

DHCP 服务器简介: 通常用户希望网络中的每台终端能够动态获取IP地址、DNS服务器的IP地址、路由信 息、网关信息等网络参数,不需要手动配置终端的IP地址等网络参数;另外,针对一 些移动终端(手机、ipad、办公笔记本等)希望能够即插即用,不需要每次修改终端 的IP等网络参数…

zabbix企业应用之low level discovery监控mysql

之前介绍了使用zabbix监控固定3306端口的mysql(文章地址为http://dl528888.blog.51cto.com/2382721/1346590),有个不好的地方是只能监控固定的3306端口,如果是非3306端口的话,需要修改模板,如果主机有多个m…

图片人脸检测——Dlib版(四)

上几篇给大家讲了OpenCV的图片人脸检测,而本文给大家带来的是比OpenCV更加精准的图片人脸检测Dlib库。 往期目录 视频人脸检测——Dlib版(六)OpenCV添加中文(五)图片人脸检测——Dlib版(四)视频…

配置设备作为DHCP 服务器(基于全局地址池)

DHCP 服务器简介: 通常用户希望网络中的每台终端能够动态获取IP地址、DNS服务器的IP地址、路由信 息、网关信息等网络参数,不需要手动配置终端的IP地址等网络参数;另外,针对一 些移动终端(手机、ipad、办公笔记本等)希望能够即插即用,不需要每次修改终端 的IP等网络参数…

kubernetes 实战 使用 nfs 作为动态 storageClass 存储

kubernetes 实战 使用 nfs 作为动态 storageClass 存储 概述 之前有介绍过 Kubernetes 实战 pv and pvc, 相信使用过的pv和pvc的同学或者有过虚拟化经验的人来说肯定会想到很多问题,比如每次申请 pvc 都需要手动添加pv,这岂不是太不方便了。那…

OpenCV环境搭建(一)

OpenCV环境搭建 环境搭建为OpenCV的python(一下简称py)开发环境搭建,建立在py3的环境和语法上实现的。 windows系统搭建 系统环境:windows 10 python 3.6 OpenCV 3.4.1 一、安装python python的安装之前在python自学笔记的项…

判断一组数字中

public class sushu{public static void main (String args []){//定义i数字范围为100-200&#xff1b;for (int i 100 ; i < 200; i){//定义一个变量bboolean b false;//定义j大于等于2&#xff0c;循环取余数&#xff0c;判断如果K等于0则除尽&#xff0c;此数不为素数f…

git+pylint实现python提交代码格式校验

环境&#xff1a;win10(64)&#xff0c;python3.7.1&#xff0c;git2.7.2&#xff0c;pylint-2.3.1&#xff0c;git_pylint_commit_hook-2.5.1 以上为当期搭建所用到的版本&#xff0c;有异常时方便查找问题。 安装pylint&#xff0c;pylint是一个单独可以对python文件进行格…

OpenCV添加中文(五)

OpenCV添加文字的方法putText(…)&#xff0c;添加英文是没有问题的&#xff0c;但如果你要添加中文就会出现“&#xff1f;&#xff1f;&#xff1f;”的乱码&#xff0c;需要特殊处理一下。 下文提供封装好的&#xff08;代码&#xff09;方法&#xff0c;供OpenCV添加中文使…

UpdatePanel的内容中出现自定义多语言运行异常

2019独角兽企业重金招聘Python工程师标准>>> 我们项目有双语要求&#xff0c;采用的是自定义符号控制。在页面加载时进行翻译。 在xml文件中有如下格式的配置 <items> <resource page"~/SalesAppeal/SalesAppealCO.aspx"> <item key"…

ELK开机自启动脚本

elasticsearch服务配置文件 cd /etc/init.dtouch elasticsearchchmod x elasticsearchvi elasticsearch并输入以下内容: #!bin/bash# chkconfig: 2345 21 89 # description: elasticsearch# JAVA_HOME/usr/lib/jvm/jdk1.8.0_91 ES_HOME/usr/local/elasticsearch-6.7.2 case…

QT5获取QPlainTextEdit 某行内容

#include <QTextBlock> #include <QMessageBox>QString str;//获取总行数 str QString::number(ui->plainTextEdit->document()->lineCount()); QMessageBox::information(this, "information", str);//输出某行内容 str ui->plainTextEdi…

pip/pip3更换国内源

pip/pip3更换国内源 用途&#xff1a;pip更换为国内源&#xff0c;可以大大的提高安装成功率和速度。 Windows更换pip/pip3源 打开目录&#xff1a;%appdata%新增pip文件夹&#xff0c;新建pip.ini文件给pip.ini添加内容 [global] timeout 6000 index-url https://pypi.t…

使用Bazel编译报错ERROR: Unrecognized option: --experimental_repo_remote_exec解决方法

ERROR: Unrecognized option: --experimental_repo_remote_exec 一、问题&#xff1a; INFO: Options provided by the client:Inherited common options: --isatty1 --terminal_columns80 INFO: Reading rc options for version from /home/emadboctor/tensorflow/.bazelrc:I…

QT5获取CPU编号和硬盘序列号

windows下执行命令除了用cmd之外&#xff0c;还有个东西叫WMIC&#xff0c;非常强大&#xff0c;可以通过他获取很多信息&#xff0c;包括硬件信息。 #include <QProcess>QString frmMain::getWMIC(const QString &cmd) {//获取cpu名称&#xff1a;wmic cpu get Nam…

视频人脸检测——Dlib版(六)

往期目录 视频人脸检测——Dlib版&#xff08;六&#xff09; OpenCV添加中文&#xff08;五&#xff09; 图片人脸检测——Dlib版&#xff08;四&#xff09; 视频人脸检测——OpenCV版&#xff08;三&#xff09; 图片人脸检测——OpenCV版&#xff08;二&#xff09; …

解决 wamp网站访问慢的问题

最近使用wamp进行调试。 一个简单页面发现wamp的响应达10s。 经过研究发现&#xff0c;是wamp的sql部分拖慢了访问速度&#xff0c;追深后发现是&#xff0c;mysql进行了dns解析而导致反问速度超慢的情况&#xff1b; 所以给mysql 减减压吧&#xff1a; my.ini(Linux下为 my.co…

Ubuntu apt-get和pip源更换

Ubuntu apt-get和pip源更换 更新数据源为国内&#xff0c;是为了加速安装包的增加速度。 更换apt-get数据源 输入&#xff1a;sudo -s切换为root超级管理员&#xff1b;执行命令&#xff1a;vim /etc/apt/sources.list&#xff1b;使用命令&#xff1a;%d 清空所有内容&…

OpenPose+win10安装

openpose在win10上的环境配置和安装&#xff0c;主要参考&#xff1a;OpenPose_1.3.0 vs2017 cuda_9.2.148_win10 cudnn9.2-windows10-x64-v7.2.1.38 windows 配置教程_无情时尚的博客-CSDN博客_openpose vs 另一篇博客后半部分有讲如何使用代码实现相应的功能&#xff1a;…

QT5获取运行程序的工作目录与程序所在的目录

在qt-creator中debug的时候&#xff0c;发现程序不能读写所在目录的配置文件&#xff0c;资源文件。 Google了一下&#xff0c;原来 运行程序的 工作目录 与 程序所在的目录是不同的概念。 跑跑这段代码就知道了&#xff1a; #include <QDebug> #include <QDir>Q…