jenkins构建中的除零错误
一. 除零错误(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构建中的除零错误的更多相关文章
- Jenkins实战应用–Jenkins构建中tag的应用
Jenkins实战应用–Jenkins构建中tag的应用 文章目录[隐藏] *系列汇总* 1,缘起. 2,回滚功能. 1,添加mode选项. 2,再添加branch选项. 3,添加Git Parame ...
- mssql sqlserver避免sql脚本中出现除零错误的方法分享
摘自:http://www.maomao365.com/?p=6612 摘要:下文介绍sql server中,sql脚本避免出现除零错误的方法分享 在各种业务系统开发中,通常会遇到除零的错误,下文分享 ...
- [原]Jenkins(八)---jenkins构建项目报错时发送错误报告邮件
/** * lihaibo * 文章内容都是根据自己工作情况实践得出. * 版权声明:本博客欢迎转发,但请保留原作者信息! http://www.cnblogs.com/horizonli/p/533 ...
- Jenkins——构建、集成中的问题
准备 Jekins 安装插件 MsBuild Plugin Team Foundation Server Plug-in 配置环境变量 我的电脑中设置环境变量,Path中添加msbuild的路 ...
- Jenkins 六: 构建中执行shell或者 windows的批处理程序
Shell/ bat Jenkins 可以在构建中执行shell命令或者windows的batch 命令. 1. 选择一个项目,点击“配置”. 2. 找到“构建” –> “增加构建步骤”.选择 ...
- 使用Jenkins构建持续集成环境
简介 Jenkins是一个开源的持续集成工具,提供了数百种插件供用户选择,能够完成整套持续集成环境的构建. 它具有如下的特点: 持续集成和持续发布 作为可扩展的自动服务器,Jenkins可以作为简单的 ...
- RF+Jenkins构建持续集成
引入RF是为了能够快速的开展自动化验收测试,Jenkins而一种持续集成工具,用于监控持续重复的工作,持续的软件版本发布/测试项目,而通过RF+Jenkins可以有利的对RF构建的接口项目进行持续集成 ...
- Gitlab自动触发Jenkins构建打包
一.目的 在部门的测试环境中,开发人员一旦向gitlab仓库提交成功代码,gitlab就会自动触发jenkins构建项目.当然在构建后还可以添加项目部署或者自动化测试的脚本.这里只针对测试环境. 二. ...
- 基于Jmeter+maven+Jenkins构建性能自动化测试平台
一.目的: 为能够将相关系统性能测试做为常规化测试任务执行,且可自动无人值守定时执行并输出性能测试结果报告及统计数据,因此基于Jmeter+maven+Jenkins构建了一套性能自动化测试平台 ...
随机推荐
- vue-router 中 meta的用法
vue-router中的meta,也就是类似于面包屑的功能 路由 代码 用这个获取 嗯,就酱~~ 参考链接:https://blog.csdn.net/qq_32963841/article/deta ...
- SSD(Single Shot MultiBox Detector)二读paper
SSD KeyWords:Real-time Object Detection; Convolutional Neural Network Introduction 目前最尖端(State-of-ar ...
- ionic真机调试Android报错 - could not read ok from ADB Server * failed to start daemon * error: cannot connect to daemon
在使用真机调试Android程序时,报错如下: could not read ok from ADB Server * failed to start daemon error: cannot con ...
- python 自动获取(打印)代码中的变量的名字字串
方法一: import inspectimport re def varname(p): for line in inspect.getframeinfo(inspect.currentframe() ...
- jvm堆配置参数
1.-Xms初始堆大小默认物理内存的1/64(<1GB)(官方建议)2.-Xmx最大堆大小默认物理内存的1/4(<1GB)(官方建议),实际中建议不大于4GB3.一般建议设置 -Xms=- ...
- java要注意的问题2
八.替Java省点内存 某些Java程序是CPU密集型的,但它们会需要大量的内存.这类程序通常运行得很缓慢,因为它们对内存的需求很大.为了能提升这类应用的性能,可得给它们多留点内存.因此,假设我们有一 ...
- 利用开源的TaskScheduler组件实现监控和管理windows计划任务
对于计划任务的执行有很多种解决方案,如利用开源Quartz作业调度框架,在SQL Server的作业等等,同时Windows的任务计划程序功能也很强大,利用此可以很方便的实现很多计划任务,除了人工进行 ...
- 调试利器之tcpdump详解
简介你执行 man tcpdump 命令,你会看到文档中对tcpdump的说明是“dump traffic on a network”.可见,tcpdump是一个根据使用者的定义对网络上的数据包进行截 ...
- Bootstrap总结一
参考我的博客:http://www.isedwardtang.com/2017/08/30/bootstrap-primer-1/
- python入门四:异常
一.异常 异常就是在触发异常条件时(解释器或程序员)而采取相应的措施 c++中异常使用try, throw, catch等关键字,而python中使用try, raise, except等 二.标准异 ...