linux+jenkins+python+svn 自动化测试集成之路

本文背景:python

  背景1---我的基础: 本机win7上安装pycharm,使用python搭建API自动化测试框架,本地运行Pass。本机上搭建jenkins,建立测试任务,定时构建Pass。linux

  背景2---公司实际: jenkins和python都是搭载linux系统服务器上,python脚本存放在svn上。shell

  在背景1的前提下,往背景2跳跃,我觉得只是一小步。挪一个环境而已,对linux基础命令还算熟悉,因而开始一天的探坑之路。windows

第一阶段:盲目试水,以为把脚本里路径改为svn就OK了。服务器

  1.修改conf中的项目路径为:http://*******.cn/svn/****API_Autotest,上传到svn上。app

  2. jenkins上新建自由风格任务,源码管理选择svn路径同上,添加帐号凭证信息,构建步骤添加执行shell命令:python run.py。(本人并不会shell脚本,windows下也是用这个命令,咨询了大佬才放心用),而后应用-保存。框架

  3.最后一步,正式验证是否成功,返回,点击“当即构建”。python2.7

  结果可想而知,华丽丽地失败了,也不期望一次成功,调出控制台输出,workspace里没有找到这个工程文件,意料之中。第二次,仍然失败,run.py里第一步是从配置文件中读取section对应值,报错提示KEY_Error,反复检查配置文件和脚本,无果。svn

第二阶段:疯狂百度,相信万能的度娘,总能找到相似的状况吧。函数

   百度了n篇文章,并无找到同样背景的状况:linux+jenkins+python+svn,大都是搭建测试环境,部署项目Java代码的,但也不能说全无收获,确实发现了几个关键点:

  1.linux通常自带python2.7,但我用的是python3.4,须要去升级服务器上的python版本,至于怎么在linux上升级python到3,网上文章一堆一堆的,看了两三篇,差很少,因而要来搭建jenkins的服务器(公司服务器太多)帐号密码,开始用下面命令安装,须要sudo -i 临时切换到root权限,预想是python2.7和3.4共存,最后把默认软连接指向python3:

  wget https://www.python.org/ftp/python/3.4.1/Python-3.4.1.tgz  #下载资源包

  tar -zxvf Python-3.4.1.tgz        #解压

  cd Python-3.4.1/                    #进入解压后的目录

  ./configure                             #配置

  make & make install              #编译&安装

  python3                                  #无报错则成功

  验证几回失败,百度对应的报错后,解决掉了不提。而后安装完没有报错了,仍是验证不经过,因而直接找开发小姐姐帮忙看,过一下子,她说好了能够用了。怎么解决的呢?小姐姐的回复是:把python2的卸掉了,启动路径替了一下。应该也能够并存的,改一下环境变量就行,可是小姐姐直接卸了~~咳~~百度里说卸掉自带的2版本可能影响其余地方,就先无论了。

  2.jenkins里pyenv插件能够指定python版本,不知道跟1是否是重复了。无论三七二十一,先去插件管理里下一个再说,用不上也不要紧嘛。

  一、2所有解决了,再次构建,还是失败,报错信息,NO SECTION,也就是说读取配置文件仍然失败。反反复复在jenkins上构建也没啥意义了,仍是先到本机上调试看看。

第三阶段:百度已无方向,返回本身调试+咨询大佬,意外收获到pycharm+svn用法

  1.在读取配置文件的脚本main函数下,配置文件路径尝试svn路径,结果显示一大串配置提示错误,百度pycharm里svn配置后发现竟然还能够从svn代码仓库里导出脚本,编辑修改后右键直接commit,太方便了,这个之后能够一直用下去。

  2.解决了pycharm里svn配置问题,从新开始尝试了读取svn路径配置文件,一样报错。本地的可运行成功,那问题就在路径上了。针对性地咨询了下测试大佬,果真,配置文件不能请求远程的文件,要加上一步拉到本地的操做。而jenkins在构建任务时会自动把svn上的代码下载到本地的workspace里,因此conf里配置文件中的project_path不能写svn路径,而是搭建jenkins的那台服务器上的workspace路径,可能由于太细节过小了,跟喝水不能太烫同样,百度里很默契的都没说起,这是我认知中的一个盲点,因而,摔倒了半天还爬不起来。

  3.大方向问题解决了,再次构建,还是failure,报错,还是路径错误,大佬建议先在服务器上尝试可否运行成功。这是一个好办法,先把py脚本一个一个地在服务器上调通再看,而且百度里关于linux下python运行报错的文章一堆一堆的,我碰到的以下:

  NO Moudle Named Requests:                      那就去linux上pip install requests     (ddt、openpyxl、configparser同理)

  NO Moudle Named HTMLTestRunnerNew:  那就打开secureFX,丢个HTMLTestRunnerNew.py到python安装目录lib下

  NO Moudle Named common:                  那就在每一个py文件起始位置加上一段:

    import os,sys
    curPath = os.path.abspath(os.path.dirname(__file__))
    rootPath = os.path.split(curPath)[0]
    sys.path.append(rootPath)

   至此,服务器上运行顺利经过。

最后,再次在jenkins构建,顺利经过,过高兴了,花了快一天的时间。留下此文总结记念。附API框架和jenkins上运行成功截图:

相关文章
相关标签/搜索