一. 除零错误(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命令怎么变,它的结果都是成功的,而第二种则必须在特定的目录下运行脚本,有一定的局限性

最新文章

  1. 最实用的IT类网站及工具大集合
  2. Android Studio22-NDK-LLDB调试
  3. codevs 1080 线段树练习
  4. json数据实际应用
  5. 关于 BCSCTL1 = CALBC1_12MHZ;DCOCTL = CALDCO_12MHZ; 的疑问
  6. c# 编程语言 编译器 Roslyn
  7. centos 6.4 安装视频解码器
  8. Counting sheep...
  9. NSBundle的使用,注意mainBundle和Custom Bundle的区别
  10. js与objective-c的交互-备
  11. 五毛的cocos2d-x学习笔记08-动画
  12. 项目开发经常使用PHP功能
  13. 基于Maven的SSM整合的web工程
  14. Tomcat8安装及配置教程
  15. mha 复制检查报错“There is no alive server. We can't do failover”
  16. Swift基础之侧滑Cell显示操作按钮
  17. String方法,js中Array方法,ES5新增Array方法,以及jQuery中Array方法
  18. JavaApi
  19. 不正常退出vim产生swp文件的解决方法
  20. Python——特殊属性与方法

热门文章

  1. JQuery输入自动完成
  2. json/pickle/shelve/xml/configparser/hashlib/subprocess - 总结
  3. 转!!ftp学习
  4. git 设置 .gitignore 为全局global + 配置.gitignore为全局后不生效解决办法
  5. window下安装mysql详细步骤
  6. git学习------>写给 Git 初学者的7个建议
  7. mysql大数据查询优化
  8. BLOG总结
  9. Php DOMDocument 中的 formatOutput
  10. Visual Studio2012打不开MVC2.0以及1.0项目如何处理