jenkins构建中的除零错误
2024-08-27 02:07:25
一. 除零错误(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命令怎么变,它的结果都是成功的,而第二种则必须在特定的目录下运行脚本,有一定的局限性
最新文章
- 最实用的IT类网站及工具大集合
- Android Studio22-NDK-LLDB调试
- codevs 1080 线段树练习
- json数据实际应用
- 关于 BCSCTL1 = CALBC1_12MHZ;DCOCTL = CALDCO_12MHZ; 的疑问
- c# 编程语言 编译器 Roslyn
- centos 6.4 安装视频解码器
- Counting sheep...
- NSBundle的使用,注意mainBundle和Custom Bundle的区别
- js与objective-c的交互-备
- 五毛的cocos2d-x学习笔记08-动画
- 项目开发经常使用PHP功能
- 基于Maven的SSM整合的web工程
- Tomcat8安装及配置教程
- mha 复制检查报错“There is no alive server. We can't do failover”
- Swift基础之侧滑Cell显示操作按钮
- String方法,js中Array方法,ES5新增Array方法,以及jQuery中Array方法
- JavaApi
- 不正常退出vim产生swp文件的解决方法
- Python——特殊属性与方法
热门文章
- JQuery输入自动完成
- json/pickle/shelve/xml/configparser/hashlib/subprocess - 总结
- 转!!ftp学习
- git 设置 .gitignore 为全局global + 配置.gitignore为全局后不生效解决办法
- window下安装mysql详细步骤
- git学习------>写给 Git 初学者的7个建议
- mysql大数据查询优化
- BLOG总结
- Php DOMDocument 中的 formatOutput
- Visual Studio2012打不开MVC2.0以及1.0项目如何处理