zoukankan      html  css  js  c++  java
  • jenkins构建pytest持续集成环境时,遇到的一些问题及处理

    前言:

    构建的项目为pytest+appium+allure,在pycharm里面已将环境代码调试并测试完毕,放到jenkins里执行的一些问题整理

    问题1.pycharm里可以正常运行代码,到了jenkins里提示module not found(而且非第三方包,自己写的py模块的情况):这里优先考虑sys.path的问题,本人亲测,不说100%的问题,至少90%的情况可以通过添加sys.path处理,也就是extend(sys.path),为什么pycharm里运行不出错了,因为pycharm在创建项目/打开项目时会自动添加项目目录路径至sys.path(项目子目录我记得也会添加)

    如图:

    这是sublime里面的sys.path截图(jenkins里面跟这个是一样的),只会将当前py文件的路径添加至sys.path:

     pycharm里面的sys.path截图:

     解决方法:

    # 添加项目目录及子目录至sys.path,
    # def append_projectDir_to_syspath():
    # rootpath=os.path.abspath('../')#获取当前目录得上级目录得绝对路径,也就是项目目录得路径
    # syspath=sys.path
    # sys.path=[]
    # sys.path.append(rootpath)#将工程根目录加入到python搜索路径中
    # sys.path.extend([os.path.join(rootpath,i) for i in os.listdir(rootpath)
    # if os.path.isdir(os.path.join(rootpath,i)) and i[0]!='.'])#将工程目录下的一级目录添加到python搜索路径中
    # sys.path.extend(syspath)
    # # print(sys.path)

    # append_projectDir_to_syspath()
    导入模块前执行一下这个函数,用于手动将项目目录及子目录添加至sys.path
    添加后得执行效果:

     可以看到module not found得错误已经不会抛出了

    问题2:
    cmd命令不能正常执行得问题,命令本地可以正常执行netstat到了jenkins里面就不能正常执行了

    我在项目中添加得一个命令:

     构建就会出错:

     这个问题坑了好久,后面发现是jenkins里面默认得环境变量是需要自己手动配置得

    首先将netstat得path找到:

     在jenkins里配置好他:路径-Manage Jenkins-Manage Nodes and Clouds-点击设置图标:

     

     

     

     手动维护好他即可,这个是通用得,node、pytest、python等等一系列得命令问题都是通过这个处理

    问题3:

    在jenkins里执行cmd命令没有任何弹窗提示,但其实是执行成功了的,我在代码里写了一个简单得检测机制:如果执行adb devices输出为空,则执行启动模拟器(雷电4),如果4723端口没被占用,则执行appium-server得命令,但是在jenkins调用雷电模拟器会没有启动窗口,appium-server里也没有(这个可以在启动appium-server时加入-g参数,手动记录日志),但是日志里可以正常输出,

    处理方案:https://www.cnblogs.com/qtclm/p/13621327.html

    总结:
    1.module not found:如果时第三方库,就通过pip安装即可,如果是自己写得模块,那就通过手动添加sys.path处理

    2.Jenkins:cmd命令不能正常执行,考虑jenkins环境变量配置,路径-Manage Jenkins-Manage Nodes and Clouds-点击设置图标

    3.jenkins:cmd命令执行后没有窗口,处理方案:https://www.cnblogs.com/qtclm/p/13621327.html

    个人感慨:
    遇到问题时需要理清思路,起初是pytest一直卡在执行界面,通过日志发现就是因为netstat命令不能正常执行导致while true条件一直成立,所以看问题时需要注重问题拆解,细化加小规模调试,遇到这种情况可以先建一个小项目先把cmd命令这些调试命令,然后再逐步网上项目得配置,这是本人的一些建议

  • 相关阅读:
    C/C++产生随机数
    BNUOJ34973Liserious战队
    oracle ebs 12.20 安装成功其过程失败日记及总结(1)
    HDU 2544 最短路 SPFA 邻接表 模板
    GridView编辑删除操作
    Hibernate_10_继承的例子_单表
    String不变性
    Mac在结构quick cocos2d-x编译环境
    Hash散列算法 Time33算法
    南京地图南京全套的卫星地图下载 百度高清卫星地图包括道路、标签信息叠加
  • 原文地址:https://www.cnblogs.com/qtclm/p/13621051.html
Copyright © 2011-2022 走看看