一. 除零错误(ZeroDivisionError)

今天在jenkins上运行接口自动化测试任务时,从控制台输出中看到了除零错误,大概是这样的

从上图中,通过分析,可以得出三个结论:

1. jenkins通过命令行执行任务时,其所在的位置是在jenkins中当前任务的工作空间下

2. 那么main.py中寻找测试用例时的os.getcwd(),得到的不是futureloan_API_framework目录,而是当前运行脚本的目录API_Auto_Test

3. 很有可能是因为找不到测试用例才发生除零错误,因为我们的代码用的是TestLoader类下的discover方法,它会匹配以test*开头的测试用例

来看代码,也印证了上述猜想

import unittest
import os
import time
from HTMLTestRunnerNew import HTMLTestRunner
from revise.futureloan_API_framework.Common.conf_dir import htmlreport_dir, testcases_dir

#实例化测试套件对象
suite = unittest.TestSuite()
#实例化TestLoader对象
loader = unittest.TestLoader()
#使用discover寻找当前目录下的所有测试用例,使用addTests将其放在测试套件下
suite.addTests(loader.discover(os.getcwd()))

#获取当前时间
now = time.strftime("%Y-%m-%d_%H-%M-%S")
#在当前目录下创建一个html文件
fs = open(htmlreport_dir + "/API Test Result_{0}.html".format(now), "wb")

#运行测试用例,生成测试报告
runner = HTMLTestRunner(stream=fs, title="API Test Report", tester="xiaozhai")
runner.run(suite)

二. 解决办法:

方法一: 采用配置目录路径的方法

在当前工程目录的Common目录下新建一个conf_dir.py的文件,利用os.path.abs(__file__)获得当前的目录路径,以及配置其他目录路径

import os

cur_dir = os.path.split(os.path.abspath(__file__))[0]

htmlreport_dir = cur_dir.replace("Common", "HtmlTestReport")

logs_dir = cur_dir.replace("Common", "Logs")

testcases_dir = cur_dir.replace("Common", "TestCases")

testdatas_dir = cur_dir.replace("Common", "TestDatas")

在main.py文件中引入conf_dir.py下的一些表示路径的变量

import unittest
import os
import time
from HTMLTestRunnerNew import HTMLTestRunner
from revise.futureloan_API_framework.Common.conf_dir import htmlreport_dir, testcases_dir

#实例化测试套件对象
suite = unittest.TestSuite()
#实例化TestLoader对象
loader = unittest.TestLoader()
#使用discover寻找当前目录下的所有测试用例,使用addTests将其放在测试套件下
suite.addTests(loader.discover(testcases_dir))

#获取当前时间
now = time.strftime("%Y-%m-%d_%H-%M-%S")
#在当前目录下创建一个html文件
fs = open(htmlreport_dir + "/API Test Result_{0}.html".format(now), "wb")

#运行测试用例,生成测试报告
runner = HTMLTestRunner(stream=fs, title="API Test Report", tester="xiaozhai")
runner.run(suite)

现在去jenkins立即构建,运行成功

方法二:在当前任务的配置中,找到构建,将构建命令修改如下

d:
cd D:\python_workshop\python6\revise\futureloan_API_framework
python main.py

这样不用改代码了,因为os.getcwd()表示的正是当前运行脚本所在的位置futureloan_API_framework目录,运行结果也是成功的

个人比较倾向于第一种方法,无论windows cmd命令怎么变,它的结果都是成功的,而第二种则必须在特定的目录下运行脚本,有一定的局限性

jenkins构建中的除零错误的更多相关文章

  1. Jenkins实战应用–Jenkins构建中tag的应用

    Jenkins实战应用–Jenkins构建中tag的应用 文章目录[隐藏] *系列汇总* 1,缘起. 2,回滚功能. 1,添加mode选项. 2,再添加branch选项. 3,添加Git Parame ...

  2. mssql sqlserver避免sql脚本中出现除零错误的方法分享

    摘自:http://www.maomao365.com/?p=6612 摘要:下文介绍sql server中,sql脚本避免出现除零错误的方法分享 在各种业务系统开发中,通常会遇到除零的错误,下文分享 ...

  3. [原]Jenkins(八)---jenkins构建项目报错时发送错误报告邮件

    /** * lihaibo * 文章内容都是根据自己工作情况实践得出. * 版权声明:本博客欢迎转发,但请保留原作者信息! http://www.cnblogs.com/horizonli/p/533 ...

  4. Jenkins——构建、集成中的问题

      准备 Jekins   安装插件 MsBuild Plugin Team Foundation Server Plug-in 配置环境变量 我的电脑中设置环境变量,Path中添加msbuild的路 ...

  5. Jenkins 六: 构建中执行shell或者 windows的批处理程序

    Shell/ bat Jenkins 可以在构建中执行shell命令或者windows的batch 命令. 1. 选择一个项目,点击“配置”. 2. 找到“构建” –> “增加构建步骤”.选择 ...

  6. 使用Jenkins构建持续集成环境

    简介 Jenkins是一个开源的持续集成工具,提供了数百种插件供用户选择,能够完成整套持续集成环境的构建. 它具有如下的特点: 持续集成和持续发布 作为可扩展的自动服务器,Jenkins可以作为简单的 ...

  7. RF+Jenkins构建持续集成

    引入RF是为了能够快速的开展自动化验收测试,Jenkins而一种持续集成工具,用于监控持续重复的工作,持续的软件版本发布/测试项目,而通过RF+Jenkins可以有利的对RF构建的接口项目进行持续集成 ...

  8. Gitlab自动触发Jenkins构建打包

    一.目的 在部门的测试环境中,开发人员一旦向gitlab仓库提交成功代码,gitlab就会自动触发jenkins构建项目.当然在构建后还可以添加项目部署或者自动化测试的脚本.这里只针对测试环境. 二. ...

  9. 基于Jmeter+maven+Jenkins构建性能自动化测试平台

      一.目的: 为能够将相关系统性能测试做为常规化测试任务执行,且可自动无人值守定时执行并输出性能测试结果报告及统计数据,因此基于Jmeter+maven+Jenkins构建了一套性能自动化测试平台 ...

随机推荐

  1. 模块 - json/pickle/shelve/xml/configparser

    序列化: 序列化是指把内存里的数据类型转变成字符串,以使其能存储到硬盘或通过网络传输到远程,因为硬盘或网络传输时只能接受bytes. 为什么要序列化: 有种办法可以直接把内存数据(eg:10个列表,3 ...

  2. 原!mysql5.6 存储过程 批量建表

    由于业务需求,需要按天分表,因此写了个存储过程,根据时间生成表. 根据createTime 的时间,以及 while循环的变量设置范围,生成该指定日期及之后的多张表. BEGIN ); ); ; '; ...

  3. ZOJ 2770 Burn the Linked Camp 差分约束

    链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do? problemCode=2770 Burn the Linked Camp Time Limi ...

  4. 010-shiro与spring web项目整合【四】缓存Ehcache

    一.Ehcache shiro每次授权都会通过realm获取权限信息,为了提高访问速度需要添加缓存,第一次从realm中读取权限数据,之后不再读取,这里Shiro和Ehcache整合. 1.添加Ehc ...

  5. android studio本地gradle

    1.从网站上下载http://services.gradle.org/distributions/ 2.打开工程里的gradle-wrapper.properties, distributionUrl ...

  6. Part01、memcache 缓存

    Python操作 RabbitMQ.Redis.Memcache.SQLAlchemy 目录 一. Memcached Memcached安装和基本使用 Python操作Memcached2.1 se ...

  7. solr 利用cul或solr界面单值更新

    本文主要是指利用solr界面或cul的更新solr的值.如果需要代码中单值更新请参考黎明露珠的博客链接:http://www.cnblogs.com/limingluzhu/p/5535314.htm ...

  8. PHP HTML DOM 解析器 中文手册

    简单的PHP HTML DOM 解析器 中文手册 | PHP Simple HTML DOM Parser中文手册 目录 快速入门 如何创建HTML DOM 对象? 如何查找HTML元素? 如何访问H ...

  9. vue-cli中config目录下的index.js文件详解

    vue-cli脚手架工具config目录下的index.js解析 转载自:http://www.cnblogs.com/ye-hcj/p/7077796.html // see http://vuej ...

  10. linux 基础知识总结

    1. 查看目录文件命令: 查看以f开头的文件:ll f* 查看/usr/local目录下的文件:ll /usr/local 按最后的修改的时间顺序,列出:ll -t */f*             ...