python 实现自动部署测试环境
预设条件
产品运行在Linux CentOS6 X64上
python3,Djanggo,Cherrypy安装好
手动安装过程
登录服务器
检查是否有以前的版本的产品在运行,有,停掉
如果有原来的代码包删除掉
上传安装包文件(手工winscp)
备份原来的产品安装目录
解压安装包文件
运行run.sh,启动服务
浏览器登录页面校验服务是否启动
import paramiko
import sys #创建SSHClient,实例对象
ssh = paramiko.SSHClient() #信任远程机器,允许访问
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) #连接远程机器 地址、端口、用户名、密码
ssh.connect(("192.168.160.234",
22,
"root",
"magic")) def remoteRun(cmd,printOutput=True):
stdin, stdout, stderr = ssh.exec_command(cmd)
output = stdout.read().decode('utf8')
errinfo = stderr.read().decode()
if printOutput:
print(output+errinfo)
return output + errinfo #查看老版本是否运行
stdin, stdout, stderr = ssh.exec_command(
'ps -ef|grep apiteach|grep -v grep') # 打印返回值
output = stdout.read().decode()
print(output) if 'python3 project/cherrypy_startup.py apitesch' in output:
print("老版本存在,杀死老版本") parts=output.split(' ')
#去除掉空字符串
parts=[part for part in parts if part]
pid=parts[1]
ssh.exec_command(f'kill -9 {pid}') #删除文件
ssh.exec_command('rm -f restapi-teach.zip') #上传文件
sftp=ssh.open_sftp()
#左边本地文件,右边上传位置
sftp.put(r'f:\temp\restapi-teach.zip','/home/stt5/restapi-teach.zip')
sftp.close() print('备份原来的安装目录')
remoteRun('rm -rf restapi-teach.bak;mv restapi-teach restapi-teach.bak') print('解压安装包')
remoteRun('unzip restapi-teach.zip',printOutput=False) print('运行')
remoteRun('cd restapi-teach;chmod +x run.sh;dos2unix run.sh;'
'./run.sh;sleep 5') print('检查版本是否运行成功')
output=remoteRun('ps -ef|grep apiteach|grep -v grep') #如果存在,运行成功
if 'python3 project/cherrypy_startup.py apitesch' in output:
print("新版本运行成功")
else:
print("新版本运行失败")
sys.exit(3) from selenium import webdriver driver=webdriver.Chrome()
driver.implicitly_wait(10)
driver.get(f'http://127.0.0.1:8066/mgr/login/login.html') driver.find_element_by_id('username').send_keys('auto')
driver.find_element_by_id('password').send_keys('auto')
driver.find_element_by_tag_name('button').click()
python 实现自动部署测试环境的更多相关文章
- 记录使用gogs,drone搭建自动部署测试环境
使用gogs,drone,docker搭建自动部署测试环境 Gogs是一个使用go语言开发的自助git服务,支持所有平台 Docker是使用go开发的开源容器引擎 Drone是一个基于容器技术的持续集 ...
- jenkins自动部署测试环境
构建脚本如下: echo "当前目录":$(pwd)echo "当前时间":$(date +%Y-%m-%d_%H:%M)find ./ -type f -na ...
- redis cluster安装部署(测试环境)
redis 应用于web前端,做缓存和数据存取的速度是挺可观的,最近看了一些资料,手痒了,就弄了一个测试环境,两台方案,试用一下. ##Redis 集群部署## 一,方案调研: 参考博客: http: ...
- jenkins+php+svn快速部署测试环境开发环境快速部署
jenkins 虽然作为java常用的打包部署工具,不过也可以使用在phpweb项目部署管理,前段时间帮公司部署了开发环境与测试环境,简单分享一下. 1.内网web环境搭建lnmp,centos下编译 ...
- Python Unittest - 根据不同测试环境跳过用例详解
本文章会讲述以下几个内容: 1.Unittest 如何跳过用例 2.如何使用sys.argv 3.自动化测试项目中如何一套代码多套环境运行 一.Unittest跳过用例 @unittest.skip( ...
- Python Unittest根据不同测试环境跳过用例详解
虽然现在用的Katalon,不过这篇Unittest基本的用法讲的还是不错的 转自:https://mp.weixin.qq.com/s/ZcrjOrJ1m-hAj3gXK9TjzQ 本文章会讲述以下 ...
- Tomcat环境配置部署测试环境及架构
Tomcat环境配置已经在前面介绍过了,这边就为童鞋们介绍下对于Tomcat的架构是怎么样的! Tomcat的架构包含(bin.conf.lib.logs.temp.wenapps.work)等文件夹 ...
- 测试人员如何使用Git部署测试环境
Git是分布式的版本控制系统. 作为一名Git的小白使用者,一开始接触很懵逼,因为总担心自己一不小心误操作影响代码仓库的代码,网络上关于Git的使用多从开发的角度,很少有人从测试的角度来介绍Git的使 ...
- 吴裕雄--天生自然python学习笔记:python实现自动网页测试
Python 可实现的网页测试的功能十分强大,甚至能通 过编程来实现让绝大多数的测试过程自动化. 这对很多开 发者来说,绝对是不可多得的神器. hash lib 纽件可以判别文件是否有过更改,只需要用 ...
随机推荐
- Python OpenCV图片转视频 工具贴(三)
Python OpenCV图片转视频 粘贴即用,注意使用时最好把自己的文件按照数字顺序命名.按照引导输入操作. # 一键傻瓜式引导图片串成视频 # 注意使用前最好把文件命名为数字顺序格式 import ...
- Eclipse安装Pydev插件时所遇到的问题
安装pydev插件折腾了半天,因为总是安装不成功,不成功的表现就是:windows-preferences设置里没有pydev 由于第一次安装这个插件所以不了解安装pydev插件的版本是有要求的,根据 ...
- 深入理解Spring的两大特征(IOC和AOP)
一.spring 的优点? 1.降低了组件之间的耦合性 ,实现了软件各层之间的解耦 2.可以使用容易提供的众多服务,如事务管理,消息服务等 3.容器提供单例模式支持 4.容器提供了AOP技术,利用它很 ...
- 【模拟7.19】那一天我们许下约定(组合数学,DP)
看了题目名字深切怀疑出题人是不是失恋了,然后出题折磨我们.然后这题就愉快的打了个暴力,最后莫名其妙wa20,伤心..... 其实这题正解不是很难想,如果说把暴力的DP搞出来,正解也差不到哪去了, 我们 ...
- ClickHouse学习系列之五【系统库system说明】
背景 之前介绍过ClickHouse相关的系列文章,现在ClickHouse已经能正常使用起来了,包括副本和分片.因为ClickHouse已经可以提供服务了,现在需要关心的就是服务期间该数据库的各项性 ...
- ANDROID开发 Fatal signal 11(SIGSEGV) at 0x问题解决方案
最近做ANDROID开发,也遇到了很多程序员遇到的一个问题:FATAL SIGNAL 11(SIGSEGV) at 0xxxxx,自然是各种搜索是否有人已然解决,虽然搜索出来的已有案例不少,基本都是内 ...
- [翻译]Go与C#对比 第三篇:编译、运行时、类型系统、模块和其它的一切
Go vs C#, Part 3: Compiler, Runtime, Type System, Modules, and Everything Else | by Alex Yakunin | S ...
- 我是如何用 ThreadLocal 虐面试官的?
我是陈皮,一个在互联网 Coding 的 ITer,微信搜索「陈皮的JavaLib」第一时间阅读最新文章,回复[资料],即可获得我精心整理的技术资料,电子书籍,一线大厂面试资料和优秀简历模板. Thr ...
- 让Qt5默认支持C++17的设置方法
单个项目的设置方法 打开项目的 pro 文件,将CONFIG += console c++11改为CONFIG += console c++17即可. 永久默认支持 c++17 的设置方法 找到 Qt ...
- js笔记22
1.在拖拽元素的时候,如果元素的内部加了文字或者图片,拖拽效果会失灵? 浏览器会给文字和图片一个默认行为,当文字和图片被选中的时候,会有一个拖拽的效果,即使我们没有人为给他添加.所以当我们点击这个元素 ...