初衷为想把本地的测试环境放到远程服务端,并配合Git上传拉取代码,以更适合团队协作,这样后面小组成员将只用在本地写UI自动化代码,测试没有问题后,一周提交一次测试代码到远程分支上,再由组长合并分支并使用jenkins构建job,在win节点上执行用例,发送报告到邮箱。以下是配置过程,有点乱,也没有图片,后续会慢慢补充。。。。也可能会把步骤摘出来一篇一篇详细说,到最后其实算是成功了,有点儿小问题就是发送到邮件的报告打不开提示:Opening Robot Framework report failed,这个还没找到解决办法,在本地部署时,用groovy-postbuild插件发送邮件的方式解决了这个问题,但是在linux部署时还是出现了这个问题,暂时先这样吧,后面需要考虑的事情还有很多,比如git的使用、用例书写规范、接口自动化用例(接口考虑在远程端执行)、用例执行效率方面。路还很长,但一直在路上,今天碰巧看到了一篇很棒的文章,其中一句话非常受益,与同为测试的人共勉:
如果系统是整个世界,那么测试就是生活,我们通过生活去认知这个世界。
生活可以很无聊,日复一日千篇一律,生活也可以很精彩,充满激情和挑战。
因人而异,冷暖自知。
1.申请测试服务器
centOS
2.下载linux版python 2.7.14
https://www.python.org/downloads/source/
3.下载linux版RF 3.0.2
https://pypi.org/project/robotframework/3.0.2/#files
4.下载linux版seleniumLibrary3.0.0
https://pypi.org/project/robotframework-selenium2library/
5.上传文件到服务器
https://www.cnblogs.com/nbf-156cwl/p/8641165.html
5.1:首先连接上一台Linux主机
5.2:输入rz命令,看是否已经安装了lrzsz,如果没有安装则执行 yum -y install lrzsz命令进行安装。
5.3:安装成功后,输入rpm命令确认是否正确安装
5.4: 使用 rz -y命令进行文件上传,此时会弹出上传的窗口:
6.java安装及环境变量的配置
vim /etc/profile
source /etc/profile
java -version
在文件最下方或者指定文件添加
export JAVA_HOME=/usr/local/java/jdk1.8.0_161
export CLASSPATH=$:CLASSPATH:$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin
添加如下内容:JAVA_HOME根据实际目录来
export JAVA_HOME=/test/java/jdk1.8.0_11
export JRE_HOME=/test/java/jdk1.8.0_11/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$JAVA_HOME:$PATH
jdk1.8.0_11
(有效配置)
/root/test/java/jdk1.8.0_11
export JAVA_HOME=/root/test/java/jdk1.8.0_11
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}
7.安装pyhon 2.7.14
tar -xvzf Python-2.7.14.tgz
cd Python-2.7.14
./configure --prefix=/python/python27
make && make install
到这一步可以先试试 pyhton 会不会展示信息
不行的话再参考以下配置环境变量
https://www.cnblogs.com/knighterrant/p/10719887.html
https://www.cnblogs.com/momoyan/p/9145100.html
配置环境变量
vim /etc/profile
PATH=/python/python27/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
source /etc/profile
8.安装RF 3.0.2
tar -xvzf robotframework-3.0.2.tar.gz
cd robotframework-3.0.2
python setup.py install
查看是否安装成功
pybot --version
Robot Framework 3.0.2 (Python 3.6.4 on linux2)
9.安装seleniumlibrary
tar -xvzf robotframework-selenium2library-3.0.0.tar.gz
chmod 755 robotframework-selenium2library-3.0.0
cd robotframework-selenium2library-3.0.0
python setup.py install
检查
import Selenium2Library
如果报错:
TypeError: __init__() takes exactly 2 arguments (4 given)
尝试用pip安装
pip install robotframework-selenium2library
注:这个命令会安装三个程序 selenium3.141.0、robotframework-3.1.2 、和robotframework-seleniumlibrary-4.0.0 默认安装最新的,并卸载低版本的包,我这边的robotframework3.0.2版本就被卸载了,更新到了3.1.2 不过应该没啥影响,有强迫症或版本要求的可以尝试其他方法。不过前面的安装好像没有什么卵用了 - -
10.安装wxPython
pip install -U \
-f https://extras.wxpython.org/wxPython4/extras/linux/gtk3/centos-7\
wxPython
默认下载最新的。报错-RuntimeError: Python version >= 3.5 required.需要python3.5及以上版本。放弃...
注:或者可以自己下载wheel文件,然后使用pip安装文件的本地副本,这个没有尝试,因为本来也没打算在linux服务器上执行ui用例(计划在win节点上运行ui用例),wxPython主要也是为了支撑Ride的运行,因此不装也罢除非想在linux环境运行UI用例,权衡利弊后,干嘛给自己找事儿呢linux环境不稳定因素那么多 不装了。
----------------
到这里,其实如果不打算在linux环境执行用例的话,以上那些好像都不用装的,因为是要在win节点上执行的,所以只要保证节点上的RF环境和Git就ok了,但是我后面的计划将接口测试放到linux环境上去,这样想的话其实也不算白费功夫.....。一开始,因为不懂jenkins和git 的工作性质,以为是linux环境通过git拉取到代码后,保存在linux环境,以为通过jenkins会把linux环境的代码分配到win节点上运行(好蠢的想法),所以一股脑的只想在linux环境配置所有东西。虽然我做足的前提准备工作的,但到最后还是走了弯路,也算值了,不知者无过,现在思路很明朗了,转换想法之后,在linux环境的RF和Git配置也不是毫无用处的了。
11.部署jenkins
就是几个简单的jenkins命令:
java -jar jenkins.war --httpPort=8081
nohup java -jar jenkins.war --httpPort=8070 &
保持登录:
nohup java -jar /app/program/jenkins.war --httpPort=8085
获取安装密匙:
cat /root/.jenkins/secrets/initialAdminPassword
安装密匙:
6099b203eb494613b4d3c7c9fe9293d0
关闭Jenkins
只需要在访问jenkins服务器的网址url地址后加上exit。例如我jenkins的地址http://127.0.0.1:8080/ ,那么我只需要在浏览器地址栏上敲下http://127.0.0.1:8080/exit 网址就能关闭jenkins服务.
重启Jenkies
http://127.0.0.1:8080/restart
重新加载配置信息
http://127.0.0.1:8080/reload
12.构建项目
Help for feature: 名字
描述
this is a windows slave
Help for feature: 描述
并发构建数
1
Help for feature: 并发构建数
远程工作目录
D:\jenkins
Help for feature: 远程工作目录
标签
win
Help for feature: 标签
jenkins slave-agent.jnlp安装 provided port 36630 is not reachable报错处理方法
#开启36630端口
firewall-cmd --zone=public --add-port=40554/tcp --permanent
# 更新防火墙规则
firewall-cmd --reload
13.Git学习 本地配置
$ ssh-keygen -t rsa -C "***@qq.com"
git remote add origin git@github.com:oldinaction/demo.git #其中git@github.com:oldinaction/demo.git是我们github中demo项目的ssh地址
git add . #就可以把所有内容添加到索引库中,注意后面有个点
git commit -m "注释内容" #提交索引库中的内容;-m是参数,表示注释内容,主要用来记录此次操作
git push -u origin master #初次关联远程仓库以后用git push -u origin master将会关联到远程的master 分支上,以后就可以git push不指定参数了
恢复本地误删的文件
撤销上次操作:
git reset HEAD +文件名.后缀
恢复文件操作:
git checkout +文件名.后缀
获取版本号:
git log –pretty=oneline已经获取到了每次修改的版本号
版本回退到上个版本(回退到上上个版本加两个^^):
git reset –hard HEAD^
回退到某一个版本号:
git reset –hard +版本号就好了。比如刚才我要回退到21a77版本就可以使用git reset –hard 21a77
查看命令历史记录:
git reflog
删除本地仓库文件:
使用git rm test.txt 之后再git commit –m “remve test.txt”发现我们的本地库里的文件已经被删除了
删错了的话,使用命令git checkout – test.txt就发现这个文件已经还原
建立新分支名称为dev:
git checkout -b dev
查看所有分支:
git branch
切换回master分支:
git checkout master
删除dev分支:
git branch –d dev
合并dev分支:
git merge dev
冲突处理(同行代码不一致引起的冲突和删除文件引起的冲突):
https://blog.csdn.net/qq_39207948/article/details/81393922
注意:
在工作区如果想删掉某个文件,这个时候我们可以把这个文件直接删掉,然后再git add ,就好了。但也可以通过git checkout +文件名.后缀。此时我们发现那句话已经没有了。这种情况适用于我们没有git add到暂存区之前。如果我们已经git add到暂存区了,怎么撤销修改呢。我们可以使用命令 git reset HEAD +文件名.后缀,先撤销暂存区的修改,然后我们可以通过命令git diff查看暂存区和工作区有什么不同,之后我们可以通过命令git checkout –index.html 发现已经修改好了。但是万一我们已经提交到仓库里呢怎么办呢,也就是我们git commit了,那就要使用我们上面所说的版本回退了git reset –hard +版本号。
14.Git linux端配置
jenkins安装git和ssh插件
插件管理中搜索git plugin 或者github,和SSH plugin 直接安装。
输入命令 ssh-keygen -t rsa -C "test@email.com" 生成SSH公钥私钥
邮箱需要输入自己的邮箱。
生成公钥私钥时有输入框提示你输入文件地址和密码,直接回车跳过,使用默认地址,不设置密码。
输入命令 tail /root/.ssh/id_rsa.pub 获取公钥:
ssh-rsa BAAAB3NzaC1yc2EAAAADAQABAAABAQDHa85OhNLaZA8ovn4pfTZdjt/frgEHkV8QAsjt0er8YS/oiMTod/GMiSYopfxkbxGAB0+cBBq5+PHqQ43ZcQQrfOa3t3ThHVOVBOgdEZJDbpYpFhH0Sxg1iFMtSX2/JcDbxMXh0xP5RCv0ZEZCvrIOv8q/G6Dr/VjHyWRWnI1s/9AmleNOPS+awk/r5gZHKhV8ZoDIt4OlY+ziHcc6bqC5+zw7j7Sg9JuNmVP/XvI+vlYEaCtuaE/OSu6RMR1DGUwa3AKMnTkLy5fMLFPgM8OyP4gnKqReJ35VZ9KAgFzQHtatlP7981LPdIDGfTYFVh+XIYrH3wEpuWT5JIioOGDh **@qq.com
pybot.bat E:\tool\python2.7\RF\魔方后台\模块测试\互动社区\板块管理\testbaidu.txt
pybot.bat D:\hyztest\test_baidu1\open_brower.txt
pybot.bat D:\jenkins\workspace\testgit\test_baidu1\open_brower.txt
15.邮件发送配置
linux下 .jenkins 目录下创建名为email-templates文件夹
在该文件夹下上传:robot_results.groovy文件
系统设置-Default Content的默认值:
$PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS:
Check console output at $BUILD_URL to view the results.
修改为:
${SCRIPT,template=”robot_results.groovy”}
Opening Robot Framework report failed报错问题暂无法处理,
--------------------------------分界线-------------------------------
太乱了,自己看了一遍还是觉得乱,本来也是从记事本直接粘过来 的,后面慢慢整理吧,时间紧任务重,祖国还未统一,加油加油~