前言:

构建的项目为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命令这些调试命令,然后再逐步网上项目得配置,这是本人的一些建议

jenkins构建pytest持续集成环境时,遇到的一些问题及处理的更多相关文章

  1. 用Jenkins构建Django持续集成环境

    用Jenkins构建Django持续集成环境 - V2EX https://www.v2ex.com/t/32054

  2. 构建基于Jenkins + Github的持续集成环境

    搭建持续集成首先要了解什么是持续集成,带着明确的目标去搭建持续集成环境才能让我们少走很多弯路.持续集成(Continuous integration)简称CI,是一种软件开发的实践,可以让团队在持续集 ...

  3. Redhat上为java Maven项目构建基于Jenkins + Github的持续集成环境

    在Redhat enterprise 6.5 的服务器上,为在gutub 上的 java mvaen项目构建一个持续集成环境,用到了Jenkins.因公司的服务器在内网,访问外网时要通过代理,所以为m ...

  4. Linux下Jenkins+git+gradle持续集成环境搭建

    Linux下Jenkins+git+gradle持续集成环境搭建 来源:IT165收集  发布日期:2014-08-22 21:45:50 我来说两句(0)收藏本文   一.项目介绍 和 linux ...

  5. 从零入门 Serverless | 教你 7 步快速构建 GitLab 持续集成环境

    作者 | 存诚 阿里云弹性计算团队 本文整理自<Serverless 技术公开课>,"Serverless"公众号后台回复"入门",即可获取系列文章 ...

  6. jenkins + Git 搭建持续集成环境

    持续集成通过自动化构建.自动化测试以及自动化部署加上较高的集成频率保证了开发系统中的问题能迅速被发现和修复,降低了集成失败的风险,使得系统在开发中始终保持在一个稳定健康的集成状态.jenkins是目前 ...

  7. 基于 Jenkins 快速搭建持续集成环境--转

    源地址:http://www.ibm.com/developerworks/cn/java/j-lo-jenkins/ 持续集成是一种软件开发实践,对于提高软件开发效率并保障软件开发质量提供了理论基础 ...

  8. Jenkins 快速搭建持续集成环境

    持续集成概述 什么是持续集成 随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题.尤其是近些年来,敏捷(Agile) 在软件工程领域 ...

  9. Jmeter+Ant+Jenkins接口自动化持续集成环境搭建(Linux)

    一.安装说明 系统环境:CentOS release 6.4 JDK版本:jdk1.8.0_181 Jmeter版本:apache-jmeter-3.0 Ant版本:apache-ant-1.9.13 ...

  10. 基于 Jenkins 快速搭建持续集成环境

      什么是持续集成 随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题.尤其是近些年来,敏捷(Agile) 在软件工程领域越来越红火 ...

随机推荐

  1. 《Python数据可视化之matplotlib实践》 源码 第四篇 扩展 第十二章

    图  12.1 import matplotlib.pyplot as plt import numpy as np barSlices=12 theta=np.linspace(0.0, 2*np. ...

  2. Navicat 导入sql文件执行失败问题的处理

    之前有很多次用Navicat执行导出的sql文件,跑着跑着就批量报错,有的报错能看懂,有的报错压根就找不到,很长的记录中翻也不好翻. 现在用命令行执行的话,还是挺好使. 1进入mysql安装路径下的b ...

  3. 解决 Docker CE 在无根模式(rootless)下无法通过 IPv6 拉取映像的问题

    折腾一天快把我逼疯了 本来 Docker 对 IPv6 的支持就不好,再来个 rootless,雪上加霜 首先,我们要区分 Docker Engine 和 里面的 Image. 拉取映像是 Docke ...

  4. 2024九省联考 数学 T19

    寒假有朋友打电话吐槽九省联考,看了眼数学卷子感觉非常刺激.刚开学没事干,试着做一下 \(19\). (\(17\) 分) 离散对数在密码学中有重要的应用.设 \(p\) 是素数,集合 \(X=\{1, ...

  5. 代码随想录Day17

    654.最大二叉树 给定一个不重复的整数数组 nums . 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点,其值为 nums 中的最大值. 递归地在最大值 左边 的 子数组前缀 ...

  6. 使用 python flask 框架实现一个简单的抽奖系统

    Flask 实现一个简易的抽奖系统 项目前置知识 目前 python主流的框架: Django .flask .Tornado 简介: 1.框架 框架? 为什莫使用框架? (前置知识讲解比较冗杂,望谅 ...

  7. Linux——添加默认路由(能ping通本网段,但是ping不通其他网段)

    2024/07/15 1.问题描述 2.问题处理 3.其他问题 1.问题描述 昨天服务器突然断电,今天重启后,网络出了些问题,具体情况如下: 能ping通本机IP ping不通网关 ping不通本网段 ...

  8. Python 潮流周刊#66:Python 的预处理器(摘要)

    本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...

  9. AutoMaper使用

    使用 AutoMapper 进行赋值 一. 什么是 AutoMapper AutoMapper是对象到对象的映射工具.在完成映射规则之后,AutoMapper可以将源对象转换为目标对象. 二. Aut ...

  10. MyBatis 从入门到放弃 ( MyBatis基础总结 )

    目录 MyBatis历史 Mybatis特性 MyBatis下载 和其它持久化层技术对比 开发环境 创建maven工程 创建MyBatis的核心配置文件 创建mapper接口 创建MyBatis的映射 ...