Skip to content

Commit 55eae7f

Browse files
committed
实践和中间件目录更换
1 parent 3fa906c commit 55eae7f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+4876
-0
lines changed
Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
# Robot Framework自动化测试框架搭建
2+
3+
[[toc]]
4+
5+
# 参考资料
6+
7+
* [Python3+RIDE+Robot Framework自动化测试框架搭建](https://www.cnblogs.com/panda-sweets/p/13641269.html)
8+
* [Docker + Jenkins 部署完整node项目](https://segmentfault.com/a/1190000021462867?utm_source=tag-newest)
9+
10+
# Robot Framework搭建详细过程
11+
12+
## 安装环境
13+
14+
* python 3.6.3
15+
* windows 10
16+
17+
pip安装过程可能过慢,可以直接使用国内的镜像地址
18+
19+
```
20+
阿里云 http://mirrors.aliyun.com/pypi/simple/
21+
中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
22+
豆瓣 http://pypi.douban.com/simple/
23+
清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/
24+
中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple/
25+
26+
使用方法:pip install robotframework -i https://pypi.tuna.tsinghua.edu.cn/simple/
27+
```
28+
29+
配置webdriver:
30+
下载 chromedriver 驱动,把 chromedriver.exe 放到 /python27/Scripts 路径下 [下载地址](http://chromedriver.storage.googleapis.com/index.html)
31+
32+
## 安装过程
33+
34+
**RobotFramework安装**
35+
36+
RF测试框架:
37+
38+
* 安装方法:CMD命令窗口运行pip命令。
39+
40+
```bash
41+
pip install robotframework
42+
```
43+
44+
**WxPython安装**
45+
46+
Wxpython是python非常有名的一个GUI库,RIDE就是基于这个库开发的。
47+
48+
```bash
49+
pip install wxPython
50+
```
51+
52+
**RIDE安装**
53+
54+
RIDE是一个图形界面工具,用于创建、组织、运行测试案例。
55+
56+
```bash
57+
pip install robotframework-ride
58+
```
59+
60+
安装过程中会提示是否创建桌面快捷方式,选择是,安装完成后,双击桌面“ride.exe”即可打开。若未生成图标,参考[资料](https://zhuanlan.zhihu.com/p/346553476)
61+
62+
**各种库安装**
63+
64+
RF的selenium库,借助Selenium,可以模拟浏览器端的测试,通常用于Web自动化测试。
65+
66+
* Selenium测试可以在Windows、Linux上的 IE、Chrome和Firefox中运行。
67+
68+
RF的Requets库,Requests是Python的HTTP客户端库,可以通过调用request库发送GET、POST、PUT、DELETE请求。
69+
70+
* HttpLibrary当然也可以了。都可以应用到接口自动化中。
71+
72+
```bash
73+
pip install robotframework-selenium2library
74+
pip install robotframework-requests
75+
pip install robotframework-httplibrary
76+
```
77+
78+
参数说明:
79+
```
80+
-d 标识是让 docker 容器在后台运行
81+
--name 定义一个容器的名字,如果没有指定,那么会自动生成一个随机数字符串当做UUID
82+
-p 9090:8080 端口映射,我本地的8080被占用了,所以随便映射了一个9090
83+
-p 50000:50000 端口映射
84+
-v /home/jenkins/data/jenkins_home:/var/jenkins_home 绑定一个数据卷,/home/jenkins/data/jenkins_home是刚才创建的本地数据卷
85+
```
86+
87+
**总结**
88+
89+
```
90+
cd /home/jenkins/
91+
mkdir -p ./data/jenkins_home/
92+
chown -R 1000:1000 /home/jenkins/data/jenkins_home/
93+
docker run -d --name jenkins -p 9090:8080 -p 50000:50000 -v /home/jenkins/data/jenkins_home:/var/jenkins_home
94+
```
95+
96+
# 运行测试
97+
98+
1)New Project,名字可自定义(type:**Directoy**;Format:**ROBOT**)
99+
100+
- 若选择Directoy,目录下面可以新增Suite,Suite下可新增CASE
101+
- 若选择FILE,目录下只能创建CASE
102+
103+
2) New Suite,名字可自定义,可配置CASE中使用的关键字。(type:**File**;Format:**ROBOT**)
104+
105+
- 若选择Directoy,目录下还可以创建suite
106+
- 若选择FILE,目录下只能创建CASE
107+
108+
3) New Test Case》名称可自定义,用例设计主要在这里。
109+
110+
一组相关的测试用例(Test Case)就是一个测试套件(Test Suite)。
111+
112+
也就是说,一个测试套件由多个测试用例串连组成,可以将测试套件理解为测试用例组。
113+
114+
115+
116+
测试程序:
117+
118+
* 测试访问百度网站,搜索指定关键字
119+
120+
```
121+
*** Settings ***
122+
Library Selenium2Library
123+
124+
*** Test Cases ***
125+
chormeTest
126+
Open Browser http://www.baidu.com Chrome
127+
Input Text id=kw robot framework学习
128+
Click Button id=su
129+
sleep 2
130+
Close Browser
131+
```
132+
133+
![1](/_images/project/practice/tools/RF/百度测试.png)
134+
135+
定位元素位置:可以[参考](https://www.cnblogs.com/yu2000/p/7141769.html)
136+
137+
![2](/_images/project/practice/tools/RF/定位元素.png)
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
#/bin/bash
2+
prj_name='stibel'
3+
container_name='jenkins'
4+
full_name="${prj_name}_${container_name}"
5+
cur_path=`pwd`
6+
7+
function build_environment()
8+
{
9+
echo "begin to build environment in ${cur_path}"
10+
11+
rm -rf ${cur_path}/data
12+
13+
if [ ! -d ${cur_path}/data ]; then
14+
echo "$cur_path/data"
15+
mkdir -p ${cur_path}/data/jenkins_home
16+
chown -R 1000:1000 ${cur_path}/data/jenkins_home
17+
fi
18+
19+
echo "end to build environment in ${cur_path}"
20+
}
21+
22+
function clean_container()
23+
{
24+
echo "begin to clear ${full_name}"
25+
26+
cnt=`docker ps -a | grep ${full_name} | wc -l`
27+
28+
if [ "$cnt"x != "0"x ]; then
29+
docker stop ${full_name}
30+
docker rm $(docker ps -q -f status=exited)
31+
fi
32+
33+
echo "end to clear ${full_name}"
34+
}
35+
36+
function build_jenkins()
37+
{
38+
echo "begin to build ${full_name}"
39+
40+
CONTAINER_NAME=${full_name}
41+
MOUNT_PATH=${cur_path}/data/jenkins_home/
42+
echo "before $MOUNT_PATH"
43+
MOUNT_PATH=`echo ${MOUNT_PATH//\//\\\/}`
44+
echo "after $MOUNT_PATH"
45+
46+
sed -i "s/\$CONTAINER_NAME/${CONTAINER_NAME}/g" ./docker-compose.yml
47+
sed -i "s/\$MOUNT_PATH/${MOUNT_PATH}/g" ./docker-compose.yml
48+
#sed -i 's#\$MOUNT_PATH#${MOUNT_PATH}#g' ./docker-compose.yml
49+
# 带'/',需要进行转义
50+
#sed -i "s/\$MOUNT_PATH/${MOUNT_PATH}/g" ./docker-compose.yml
51+
52+
docker-compose up -d
53+
54+
echo "end to build ${full_name}"
55+
}
56+
57+
function MAIN()
58+
{
59+
echo "begin to MAIN"
60+
61+
build_environment
62+
clean_container
63+
build_jenkins
64+
65+
echo "end to MAIN"
66+
}
67+
68+
MAIN
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
version: '3'
2+
3+
services:
4+
jenkins:
5+
restart: always
6+
image: jenkins/jenkins:lts
7+
container_name: $CONTAINER_NAME
8+
ports:
9+
- '8090:8080'
10+
- '50000:50000'
11+
volumes:
12+
- $MOUNT_PATH:/var/jenkins_home
Lines changed: 158 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,158 @@
1+
# Docker实践 - 安装Jenkins
2+
3+
[[toc]]
4+
5+
# 参考资料
6+
7+
* [Docker 安装 Jenkins](https://segon.cn/install-jenkins-using-docker.html)
8+
* [Docker + Jenkins 部署完整node项目](https://segmentfault.com/a/1190000021462867?utm_source=tag-newest)
9+
10+
# Docker安装Jenkins详细过程
11+
12+
## 安装环境
13+
14+
* CentOS 7.5
15+
* Docker version 1.13.1
16+
17+
```
18+
[root@VM-0-10-centos local]# docker -v
19+
Docker version 1.13.1, build 0be3e21/1.13.1
20+
[root@VM-0-10-centos local]# cat /etc/*release
21+
CentOS Linux release 7.5.1804 (Core)
22+
```
23+
24+
## 安装过程
25+
26+
**1. 拉取镜像**
27+
28+
安装的版本是2.222.3-centos,可从以下地址获取其他目标版本:[https://hub.docker.com/_/jenkins?tab=tags](https://hub.docker.com/_/jenkins?tab=tags)
29+
30+
```bash
31+
docker pull jenkins/jenkins:2.222.3-centos
32+
```
33+
34+
**2. 创建本地数据卷**
35+
36+
这里映射本地数据卷的路径为/home/jenkins/data/jenkins_home/,可自行定义。
37+
38+
```bash
39+
mkdir -p /data/jenkins_home/
40+
```
41+
42+
需要修改下**目录权限**,因为当映射本地数据卷时,/home/jenkins/data/jenkins_home/目录的拥有者为root用户,而容器中jenkins用户的 `uid``1000`
43+
44+
```bash
45+
chown -R 1000:1000 /home/jenkins/data/jenkins_home/
46+
```
47+
48+
**3. 创建容器**
49+
```bash
50+
docker run -d --name jenkins -p 9090:8080 -p 50000:50000 -v /home/jenkins/data/jenkins_home:/var/jenkins_home jenkins/jenkins:2.222.3-centos
51+
```
52+
53+
参数说明:
54+
55+
```bash
56+
-d 标识是让 docker 容器在后台运行
57+
--name 定义一个容器的名字,如果没有指定,那么会自动生成一个随机数字符串当做UUID
58+
-p 9090:8080 端口映射,我本地的8080被占用了,所以随便映射了一个9090
59+
-p 50000:50000 端口映射
60+
-v /home/jenkins/data/jenkins_home:/var/jenkins_home 绑定一个数据卷,/home/jenkins/data/jenkins_home是刚才创建的本地数据卷
61+
```
62+
63+
**4. 总结**
64+
65+
```
66+
cd /home/jenkins/
67+
mkdir -p ./data/jenkins_home/
68+
chown -R 1000:1000 /home/jenkins/data/jenkins_home/
69+
docker run -d --name jenkins -p 9090:8080 -p 50000:50000 -v /home/jenkins/data/jenkins_home:/var/jenkins_home
70+
```
71+
72+
## 配置过程
73+
74+
**1. 打开 Jenkins**
75+
76+
通过浏览器访问 http://1.1.1.1:9090/(注意替换成你自己的IP和端口)进入初始页,如果 Jenkins 还没有启动完成,会显示如下内容:
77+
78+
![1](/_images/project/practice/Jenkins/访问Jenkins.png)
79+
80+
**2. 输入管理员密码**
81+
82+
这里要求输入初始的管理员密码,根据提示密码在/var/jenkins_home/secrets/initialAdminPassword这个文件中,注意这个路径是 Docker 容器中的,所以我们通过如下命令获取一下。
83+
84+
```bash
85+
docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword
86+
85770376692448b7b6a8e301fb437848
87+
别忘了我们映射了本地数据卷/home/jenkins/data/jenkins_home,所以也可以通过如下命令输出
88+
89+
cat /home/jenkins/data/jenkins_home/secrets/initialAdminPassword
90+
85770376692448b7b6a8e301fb437848
91+
```
92+
输入密码后,点击继续
93+
94+
![2](/_images/project/practice/Jenkins/解锁Jenkins.png)
95+
96+
**3. 安装插件**
97+
98+
![3](/_images/project/practice/Jenkins/自定义Jenkins.png)
99+
100+
这里选择安装推荐的插件,然后 Jenkins 会自动开始安装。
101+
102+
![4](/_images/project/practice/Jenkins/安装插件.png)
103+
104+
**4. 创建管理员**
105+
106+
![5](/_images/project/practice/Jenkins/创建用户.png)
107+
108+
**5. 配置完成**
109+
110+
![5](/_images/project/practice/Jenkins/配置完成.png)
111+
112+
113+
## 配置远程Linux工作节点
114+
115+
Jenkins ——> Manage Jenkins ——> Manage Nodes and Clouds
116+
117+
新建节点 ——> 配置节点 ——> 启动节点代理
118+
119+
备注:启动代理会用到宿主机上的JAVA,需要配置成1.8(jdk-8u221-linux-x64.tar.gz),详细内容见问题记录。
120+
121+
![6](/_images/project/practice/Jenkins/配置Linux节点.png)
122+
123+
然后节点任务内容:
124+
125+
![7](/_images/project/practice/Jenkins/配置节点任务挂载点.png)
126+
127+
![8](/_images/project/practice/Jenkins/配置节点任务构建脚本.png)
128+
129+
配置节点任务执行:
130+
![9](/_images/project/practice/Jenkins/配置节点任务执行.png)
131+
132+
## 问题记录
133+
134+
1.启动代理会用到宿主机上的JAVA,看代理日志会一个个默认路径去找java
135+
```
136+
...
137+
[05/02/21 13:41:27] [SSH] Checking java version of /usr/java/latest/bin/java
138+
Couldn't figure out the Java version of /usr/java/latest/bin/java
139+
bash: /usr/java/latest/bin/java: No such file or directory
140+
141+
[05/02/21 13:41:27] [SSH] Checking java version of /usr/local/bin/java
142+
Couldn't figure out the Java version of /usr/local/bin/java
143+
bash: /usr/local/bin/java: No such file or directory
144+
145+
[05/02/21 13:41:27] [SSH] Checking java version of /usr/local/java/bin/java
146+
[05/02/21 13:41:27] [SSH] /usr/local/java/bin/java -version returned 1.8.0_221.
147+
[05/02/21 13:41:27] [SSH] Starting sftp client.
148+
[05/02/21 13:41:27] [SSH] Copying latest remoting.jar...
149+
Source agent hash is 0146753DA5ED62106734D59722B1FA2C. Installed agent hash is 0146753DA5ED62106734D59722B1FA2C
150+
Verified agent jar. No update is necessary.
151+
Expanded the channel window size to 4MB
152+
[05/02/21 13:41:38] [SSH] Starting agent process: cd "/home/jenkins" && /usr/local/java/bin/java -jar remoting.jar -workDir /home/jenkins -jar-cache /home/jenkins/remoting/jarCache
153+
May 02, 2021 9:41:39 PM org.jenkinsci.remoting.engine.WorkDirManager initializeWorkDir
154+
INFO: Using /home/jenkins/remoting as a remoting work directory
155+
May 02, 2021 9:41:39 PM org.jenkinsci.remoting.engine.WorkDirManager setupLogging
156+
INFO: Both error and output logs will be printed to /home/jenkins/remoting
157+
```
158+

0 commit comments

Comments
 (0)