本文背景:

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

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

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

第一阶段:盲目试水,觉得把脚本里路径改成svn就OK了。

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

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

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

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

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

  百度了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是不是重复了。不管三七二十一,先去插件管理里下一个再说,用不上也没关系嘛。

  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上运行成功截图:

 

  

linux+jenkins+python+svn 自动化测试集成之路的更多相关文章

  1. jenkins+maven+svn 持续集成环境搭建

    说明:部署传统的web应用(.war) 准备工作: (1) 系统环境:CentOS7 (2) 安装JDK:https://www.cnblogs.com/myitnews/p/11493847.htm ...

  2. linux+jenkins+jmeter+ant持续集成

    0.安装jdk 1.下载jdk8 登录网址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151 ...

  3. Jenkins与SVN持续集成

    官网下载Jenkins&SVN&eclipse,版本号没要求,建议使用最新稳定版本 登录Jenkins:http://localhost:8080 登录SVN:http://local ...

  4. Jenkins+Python+GitLab持续集成

    创建任务 登录Jenkins,点击左侧列表的新建选项.输入任务名称,选择构建一个自由风格的软件项目,点击确定. 配置 在任务配置界面,可以设置General标签中的丢弃旧的构建选项,设置保持构建的天数 ...

  5. linux +jenkins +python 集成测试

    1.jenkin安装部署 2.git 安装 3.git server 配置 4.contab

  6. Jenkins持续集成项目搭建与实践——基于Python Selenium自动化测试(自由风格)

    Jenkins简介 Jenkins是Java编写的非常流行的持续集成(CI)服务,起源于Hudson项目.所以Jenkins和Hudson功能相似. Jenkins支持各种版本的控制工具,如CVS.S ...

  7. linux+jenkins+github+python持续集成

    1.服务器上事先安装jenkins   参见:linux上war包方式安装Jenkins 2.新建一个自由风格的job,名字随意起 3.配置git(拉取github代码) 从github复制pytho ...

  8. Linux记录-SVN+Jenkins+jdk+maven自动化集成部署

    1.svn部署 yum -y install subversion svnserve --version 查看版本 mkdir -p /usr/app/svn svnadmin create /usr ...

  9. 使用jenkins + python + selenium一步步搭建web自动化测试“框架”(1) - 各部件简介

    原先搭建过一个自动化测试框架,迷迷糊糊不求甚解,算是搭建了一个仅限于能用的.根本算不上框架的玩意儿. 现在回过头来好好看看究竟每一步是怎么联系起来的,是怎么运行起来的. 本次博客先说说各部件都是干什么 ...

随机推荐

  1. 预学第三天:Ge常用t快捷键,码云,Git使用

    目录 Get常用快捷键 码云及Git的使用 Get常用快捷键 git init #创建一个本地的仓库 **gie add test.txt #指定文件添加 ***git add . #当前文件夹下所有 ...

  2. 生成数据库自增不重复ID的方法

    namespace ConsoleApp1 { class Program { static void Main(string[] args) { ); ; i < ; i++) { var t ...

  3. python 之 并发编程(守护进程、互斥锁、IPC通信机制)

    9.5 守护进程 主进程创建守护进程 其一:守护进程会在主进程代码执行结束后就立即终止 其二:守护进程内无法再开启子进程,否则抛出异常:AssertionError: daemonic process ...

  4. 个人永久性免费-Excel催化剂功能第47波-VBA开发者喜爱的加密函数类

    VBA的确是个很不错的编程工具,寄生在OFFICE内,无需安装庞大的开发环境,即开即用,方便灵活,能实现的事情也很多,但毕竟VBA是微软停止更新维护将近20年的一种语言,计算机的世界发展速度有多快大家 ...

  5. [leetcode] 263. Ugly Number (easy)

    只要存在一种因数分解后,其因子是2,3,5中的一种或多种,就算是ugly数字. 思路: 以2/3/5作为除数除后,最后结果等于1的就是ugly数字 Runtime: 4 ms, faster than ...

  6. docker实战(二)之redis的使用

    docker中安装redis的步骤比较简单,Linux系统版本centos7.4 1.官方仓库https://hub.docker.com/r/library/redis/tags/中查看redis的 ...

  7. Hadoop学习(3)-mapreduce快速入门加yarn的安装

    mapreduce是一个运算框架,让多台机器进行并行进行运算, 他把所有的计算都分为两个阶段,一个是map阶段,一个是reduce阶段 map阶段:读取hdfs中的文件,分给多个机器上的maptask ...

  8. get 请求和post请求的具体区别

    get请求是向服务器索要数据,post请求是向服务器传送数据 的,浏览器限制了get的传送量,post可以大量的把数据传给 服务器,一般情况下get请求,请求体是空的,请求只发一次 ,如果是post请 ...

  9. Docker 工作原理及容器化简易指南

    Docker 非常棒! 它使软件开发者无需担心配置和依赖性,在任何地方打包,发送和运行他们的应用程序.而在与 Kubernetes 相结合后,它使应用集群部署和管理变得更方便.这使得 Docker 深 ...

  10. PHPStrom激活方法【亲测有效2018.4.23】

    直接用浏览器打开 http://idea.lanyus.com/ 点击页面中的"获得注册码", 然后在注册时切换至Activation Code选项,输入获得的注册码一长串字符串 ...