文档章节

Selenium2 Python 自动化测试实战学习笔记(九)

henni_719
 henni_719
发布于 2017/04/22 17:16
字数 4515
阅读 5
收藏 0

第十一章 Git代码管理项目

         Git是一个开源的分布式版本控制住系统,用以有效、高速的处理从很小到非常大的项目版本管理。

         Git管理项目的方式有两种:一种是本地部署Git版本管理系统,另一种是通过在线的代码托管。

本地部署Git版本管理系统,需要自己搭建环境,但项目的提交与更新速度快,更适合比较封闭项目;在线托管最大的好处是在有网络的情况下可以随时随地的提交自己的代码,但项目是公开的,当然也可以创建私有项目,大多属于付费服务。

         在代码托管服务器,GitHub无疑是最优秀的,其稳定性吸引了大批开发者和开源团队贡献自己的代码和项目。GitCafe 是国内非常优秀的代码托管服务网站,而且与GitHub 的使用极为相似。

11.1Git/GitCafe 托管测试项目

1)        下载及安装git

MacOSX用户下载链接:https://github.com/timcharper/git_osx_installer/downloads

Windows用户下载链接:http://code.google.com/p/msysgit/downloads/list

Linux各版本下安装Git

Debian/Ubuntu $apt-get install git-core

Fedora $ yuminstall git

Gentoo $emerge --ask --verbose dev-vcs/git

ArchLinux $ pacman -S git

2)        创建SSH秘钥

在使用GitCafe 前你必须先建创自已的SSH key:

进入SSH 目录

Ubuntu

root@fnngj-H24X:/home/fnngj/Python/pyse#cd ~/.ssh

root@fnngj-H24X:~/.ssh#pwd

/root/.ssh

生成新的SSH 秘钥

如果你已经有了一个秘钥(默认秘钥位置~/.ssh/id_rsa文件存在)

root@fnngj-H24X:~/.ssh#ssh-keygen-t rsa -C fnngj@126.com

查看目录下会生成两个问题,id_rsa 是私钥,id_rsa.pub是公钥。记住千万不要把私钥文件id_rsa透露给任何人。

3)        添加SSH 公钥到GitCafe

1.       用文本工具打开公钥文件~/.ssh/id_rsa.pub ,复制里面的所有内容到剪贴板。

2.      进入GitCafe-->账户设置-->SSH 公钥管理设置项,点击“添加新公钥”按钮,在Title 文本框中输入任意字符,在Key 文本框粘贴刚才复制的公钥字符串,按保存按钮完成操作。

4)        测试链接

以上步骤完成后,你就可以通过以下命令来测试是否可以连接GitCafe 服务器了。

root@fnngj-H24X:~/.ssh#ssh -T git@gitcafe.com

 

     11.1.1 提交代码

首先,在GitCafe 注册帐号并登录,选择创建一个项目。填写项目相关信息点击“创建”。

             Git 的基本命令:在任意目录下输入“git”,查看git 所提供的命令。

        root@fnngj-H24X:/home/fnngj/Python/pyse#git

              最常用的git 命令有:

add 添加文件内容至索引

bisect 通过二分查找定位引入bug 的变更

branch 列出、创建或删除分支

checkout 检出一个分支或路径到工作区

clone 克隆一个版本库到一个新目录

commit 记录变更到版本库

diff 显示提交之间、提交和工作区之间等的差异

fetch 从另外一个版本库下载对象和引用

grep 输出和模式匹配的行

init 创建一个空的git 版本库或者重新初始化一个

log 显示提交日志

merge 合并两个或更多开发历史

mv 移动或重命名一个文件、目录或符号链接

pull 获取并合并另外的版本库或一个本地分支

push 更新远程引用和相关的对象

rebase 本地提交转移至更新后的上游分支中

reset 重置当前HEAD 到指定状态

rm 从工作区和索引中删除文件

 show 显示各种类型的对象

status 显示工作区状态

tag 创建、列出、删除或校验一个GPG 签名的tag 对象

 

全局设置:设置自己的用户名和密码,和GitCafe 保持一致:Ubuntu

root@fnngj-H24X:/home/fnngj#git config--global user.name 'fnngj'

root@fnngj-H24X:/home/fnngj#git config--global user.email 'fnngj@126.com'

 

在本地创建一个项目:Ubuntu

root@fnngj-H24X:/home/fnngj/pyse# ls

baidu.py baidu.py~

创建pyse 目录,在目录下创建了一个简单的测试脚本baidu.py。

 

Ubuntu

root@fnngj-H24X:/home/fnngj/pyse#git init

初始化空的Git 版本库于/home/fnngj/pyse/.git/

Gitinit 对我们的目录进行初始化。使pyse 目录交由Git 进行管理。

 Ubuntu

root@fnngj-H24X:/home/fnngj/pyse# git status

git status 查看当前项目下所有文的状态

我们看到当前处于master(主)分支,罗列了当前目录下的文件(baidu.py),并且提示我未对当前目录下的文件进行跟踪(跟踪什么?跟踪文件增、删、改的状态。);更详细的告诉我可以通过git add <file>来对文件进行跟踪。


root@fnngj-H24X:/home/fnngj/pyse#git add .

root@fnngj-H24X:/home/fnngj/pyse# git status

 

git add . git add 命令可以对指定指定的文件添加跟踪。例如:git add baidu.py。“.”点号表示对当前目录下的所有文件/文件夹进行跟踪,就是提交给Git 进行管理。

git status 通过git status 命令查看当前Git 仓库的信息。

 

root@fnngj-H24X:/home/fnngj/pyse# git commit-m 'first commit file'

git commit 将文件(git add 进行管理的文件)提交到本地仓库。-m 参数对本次的提交加以描述。一般提交的描述必不可少,从而方便可追溯每次提交都做了哪些修改。

准备工作已经完成,下面提交代码到GigCafe:

Ubuntu

root:/home/fnngj/pyse#git remoteadd origin 'git@gitcafe.com:fnngj/pyse.git'

root:/home/fnngj/pyse#git push-u origin master

git remote add origin'git@gitcafe.com:fnngj/pyse.git'

如果你是第一次提交项目,这一句非常重要,这是你本地的当前的项目与远程的哪个仓库建立连接。

git push -u origin master

将本地的项目提交到远程仓库中。

现在已经可以访问GitCafe 上看到我们提交的项目了!


 

 

     11.1.2 更新代码

                   克隆代码

上面的代码编写与提交是我在公司的电脑上完成的,假如我回到了家里想继续编写自己的程序,那么需要将代码克隆家里的电脑上。

/Python_selenium2$ git clone git://gitcafe.com/fnngj/pyse.git

git://gitcafe.com/fnngj/pyse.git

为提交的项目在GitCafe 上的地址。通过git clone 命令就可以把项目克隆到本地。

 

更新项目

我们克隆文件到本地的目的是进一步地对代码进行修改并提交。通过git status 你会发现, 我在pyse 目录下做了比较大的改动, 首先修改了Gitcafehelpdoc.wps 文件,然后新增加了一些文件和文件夹。

 

提交更新

去克隆一个项目很简单,提交一个项目比较麻烦,必须有相应的权限。因为我已经更换了电脑,所以我需要再次在本机生成ssh公钥,并把生成的公钥添加到GitCafe 中。具体步骤,参考前面的内容。测试链接:

/Python_selenium2$ ssh -T git@gitcafe.com

 

提交代码到GitCafe:

/Python_selenium2$ git add . ---添加当前目录下的所文件及文件夹

/Python_selenium2$ git commit -m "addtest file and data and report" --对提交的内容进行说明

/Python_selenium2$ git push origin master --提交代码到远程服务器(gitcafe

/Python_selenium2$ git remote –v

在git push 的时候出问题了,告诉不能与远程服务器链接。但是通过git remote -v 查看你当前项目远程连接的是的仓库地址是OK 的呀!但是这个Git 地址只能用于克隆文件到本地,无法通过这个地址push 项目。

git@gitcafe.com:fnngj/pyse.git

上面的地址才是一个可以push 项目的地址。

那么我们就需要把origin 删除掉,重新以上面的地址建立链接。

/Python_selenium2$ git remote rm origin --删除origin

/Python_selenium2$ git remote add origin'git@gitcafe.com:fnngj/pyse.git' --重新链接

/Python_selenium2$ git remote -v -- 现在的链接地址是可以push

/Python_selenium2$ git push -u origin master--重新push 项目

这一次就可以正常push 项目了,这也是新手容易迷惑的地方;在GitCafe中,克隆项目与提交项目的地址存在细微的差别。

 

 

 

删除提交

通过Git 管理的项目,有些文件或目录已经废弃掉了,我需要手动删除这些文件或目录,通过git rm命令来删除文件。

/Python_selenium2$ git rm baidu.py~ ---删除文件

/Python_selenium2$ git rm abc/ ---删除目录

/Python_selenium2$ git status

/Python_selenium2$ git commit -m"delete baidu.py~"

/Python_selenium2$ git push origin master

 

pull最新代码到本地

为了避免冲突我们应该形成良好的习惯,在每次push 代码之先把服务器上最新的代码pull 到本地。

/Python_selenium2$ git pull origin master

 

主流的在线托管网站:

http://www.github.com/

http://git.oschina.net/

 

11.2 Git/GitServer搭建

                   如果你刚好一个台闲置的服务器的话来做为Git 服务器是个不错的选择。下面通过一种最简单的方式来构建我们的Git Server。我们在虚拟机(ubuntu)来创建一个Git Server ,本地通过模拟A、B两个用户向Git Server 克隆项目,然后通过不同的用户push和pull 项目。

   

 

通过上面结果图可以看到,本机系统为windows XP ,通过Oracle VM VirtualBox 安装Ubuntu12.04系统,在Ubuntu 上我们创建了git server ,本机系统上创建了分别两个目录(git、git2)来表示两个不同的用户向git server 上提交和拉取项目。

 

  11.2.1 配置Git Server

                   首先登录Ubuntu 系统创建Git Server

1、安装Git 和openssh:

Ubuntu

fnngj@fnngj-VirtualBox:sudoapt-get install git-core

fnngj@fnngj-VirtualBox:sudoapt-get install openssh-server

fnngj@fnngj-VirtualBox:sudoapt-get install openssh-client

2、创建一个Git 用户为:gituser,密码为:git。

fnngj@fnngj-VirtualBox:/home/fnngj# addusergituser

3、切换到gituser 用户

fnngj@fnngj-VirtualBox:~/git$ su –gituser

gituser@fnngj-VirtualBox:~$ pwd --查看当前路径

gituser@fnngj-VirtualBox:~$ mkdir git--创建git 目录

gituser@fnngj-VirtualBox:~$ cd git/ --进入git 目录

注意:通过root 用户切换到其它用户是不需要密码的,如果通过普通用户切换到root 用户或其它普通用户时需要输入用户密码。的Linux 操作系统下root 具有最高权利。

 

4、创建git-test.git项目

gituser@fnngj-VirtualBox:~/git$git --bareinit git-test.git -- 创建git-test.git 仓库

现在创建了一个空项目。

 

  11.2.2 检查连接

在访问虚拟机之前我们需要确认本地系统与虚拟机是否可以正常连接,一般虚拟机会提供了三种工作模式,host-only(主机模式)、NAT(网络地址转换模式)、bridged(桥接模式),读者可以参考其它相关资料进行配置。

查看虚拟机IP:

root@fnngj-VirtualBox:/home/gituser/git# ifconfig

在linux 下可以通过ifconfig 命令查看本地网络配置,通过上面的信息可以了解到当前的虚拟机IP为:172.16.10.3

本地ping 虚拟机IP 地址:

/Python_selenium2$ ping 172.16.10.3

本地系统通过ping 命令可以访问到虚拟机,那么我们就可以正常进行后面的操作。

 

 

   11.2.3 A用户访问Git服务器

Git 服务器已经搭建完成,并且本机与服务器之间通信正常,下面模拟A 用户操作Git 项目。

克隆项目到本地:

Git 的常用命令我们已经比较熟悉了,git clone 可以将项目克隆到本地,有所不同的是这次我们克隆的是虚拟主机(172.16.10.3)下的(/home/gituser/git/git-test.git)目录下的项目,注意我们是通过gituser 用户访问的,所以需要输入gituser 用户的密码git。

提交项目

我们在git/git-test.git 目录下创建hello.py文件:

git1/git-test(master) $ git status

git1/git-test(master) $ git add .

git1/git-test(master) $ git commit-m 'hello'

git1/git-test(master) $ git pushorigin master

 

11.2.4B用户访问Git服务器

Git 服务器已经搭建完成,并且本机与服务器之间通信正常,下面模拟B 用户操作Git 项目。

克隆项目到本地:

Git 的常用命令我们已经比较熟悉了,git clone 可以将项目克隆到本地,有所不同的是这次我们克隆的是虚拟主机(172.16.10.3)下的(/home/gituser/git/git-test.git)目录下的项目,注意我们是通过gituser 用户访问的,所以需要输入gituser 用户的密码git。

提交项目

我们在git/git-test.git 目录下创建hello.py文件:

git2/git-test(master) $ git status

git2/git-test(master) $ git add .

git2/git-test(master) $ git commit-m 'hello'

git2/git-test(master) $ git pushorigin master

 

A 用户拉取(pull)项目

git1/git-test (master) $ git pull origin master

通过pull 命令来拉取B 用户所提交的git.py 文件。最终,我们达到多人协作开发的目的。需要强调的是我们的A、B 两个用户与git server 保持通信所使用的是SSH 协议,用户为gituser ,每次在提交和拉取的时候都需要输入gituser 用户密码。

如果读者想实现更强大的git 管理可以使用:

l  使用gitosis 来管理(gitosis 可以设定到"谁" 可以存取此专案)

l  使用gitolite 来管理(gitolite 可以设定"谁" 可以存取此专案, 而且, 可以设定只能存取哪个branch等路径)

 

第十二章 持续集成Jenkins入门

         大师Martin Fowler 对持续集成是这样定义的:持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误。许多团队发现这个过程可以大大减少集成的问题,让团队能够更快的开发内聚的软件。

    Jenkins 主要用于监视执行重复工作,如建立一个软件项目或工作运行的计划任务。当前Jenkins 关注以下两个工作:

    不断的进行项目的构建/测试软件:就像CruiseControl 的或DamageControl。概括地说,Jenkins 提供了一个易于使用的所谓的持续集成系统,使开发人员更容易修改整合到项目中,并使它更容易为用户获得一个新的版本。自动,连续生成提高了生产率。

监控外部运行的作业:如计划任务作业和procmail 的工作,即使是那些在远程机器上运行的执行。例如,cron 的,你收到的是定期的电子邮件,捕获输出,它是由你来看看他们的努力和注意的时候就坏了。Jenkins 保持这些产出和很容易让你注意到什么是错的。

 

12.1 环境搭建

         Jenkins 是基于Java 开发的一种持续集成工具,所以,Jenkins 需要Java 环境,关于Java环境的配置我们在第九章使用Selenium Grid 时已经做了介绍,这里就不在讲解。

1.  安装tomcat

tomcat 是真对Java 的一个开源中间件服务器(容器),基于Java Web 的项目需要借助tomcat 才能运行起来。tomcat 官方网站:http://tomcat.apache.org/


点击页面右侧tomcat 版本进行下载,对下载的压缩包进行解压,目录结构如下:

 

 

 

通常将需要运行有应用放到webapps/目录下,进入bin/目录下,双击startup.bat 来启动tomcat 服务器。

2.安装Jenkins

Jenkins 官方网站:http://jenkins-ci.org/


打开首页后,我们可以在页面右侧找到不到系统所对应的Jenkins 版本,读者可以根据自己的系统版本进行下载。下载完成,双击进行安装,点击“next”按钮,我们直接将其安装到tomcat 的webapps\目录下。

运行Jenkins

进行tomcat 的bin/目录下启动startup.bat,通过浏览器访问:http://localhost:8080/

 

 

 

 

12.2 创建任务

         点击首页“创建一个新任务”的链接,如下:


         Jenkins 提供了四种类型的任务:

l  构建一个自由风格的软件项目

这是Jenkins 的主要功能.Jenkins 将会结合任何SCM 和任何构建系统来构建你的项目, 甚至可以构建软件以外的系统.

l  构建一个maven 项目

构建一个maven 项目.Jenkins 利用你的POM 文件,这样可以大大减轻构建配置.

l  构建一个多配置项目

适用于多配置项目,例如多环境测试,平台指定构建,等等.

l  监控一个外部的任务

这个类型的任务允许你记录执行在外部Jenkins 的任务, 任务甚至运行在远程机器上.这可以让Jenkins 作为你所有自动构建系统的控制面板.

选择第一个项“构建一个自由风格的软件项目”,点击“OK”。进入项目的详细配置页面如下:

添加项目描述:

 

 

 

高级选项:


源码管理:


构建触发器:


增加构建步骤:


我们选择execute Windows batch command,来创建一个windows 下的批处理。

假如,我在d:\\盘根目录下有一个test.py 的脚本,我们要在命令提示符下来运行这个脚本,如何做呢?

我需要两步操作,首先,需要切换到D 盘,接着通过Python 执行test.py 文件。


创建完成,点击保存。

12.3 运行构建

         项目首页如下:


左侧列表是关于项目的操作。

如果需要修改刚才的配置信息,可以点击“配置”链接重新进行修改。

点击“立即构建”选项,Build History 将显示项目的构建状态。

点击“Console Output”查看:

    跟我们在命令提示符下的操作一致,最后提示:SUCCESS,表示此次构建是成功的。

查看构建历史:

点击“返回到工程”返回到项目首页,点击“构建历史”,如果进行了多次构建,可以看到项目的构建历史图表。

 

进一步探索:

l  通过Jenkins 实现定时任务。比操作系统的定时任务更方便灵活。

l 与CVS 和SVN 等版本控制工具集合,使版本工具发生更新时进行项目的构建。

© 著作权归作者所有

henni_719
粉丝 2
博文 466
码字总数 343938
作品 0
信阳
QA/测试工程师
私信 提问
python资料全集

python: 微信公众号开发小记——2.80端口上的服务 python: 微信公众号开发小记——3.接入三方登录 使用python编写一个壁纸网站的简单爬虫 python: python List 用法 Python 中各个时间复杂度...

d_watson
2016/04/15
175
0
八月暑期福利,10本Python热门书籍免费送!

八月第一周,网易云社区联合博文视点为大家带来Python专场送书福利,10本关于Python的书籍内容涉及Python入门、绝技、开发、数据分析、深度学习、量化投资等。以下为书籍简介,送书福利请见文...

网易云
2018/08/02
0
0
筒子们,免费学习《Python自动化测试开发实践》课啦,请接住~

经常会有人问: 蛋哥,最近有没有什么免费的技术课啊? 蛋哥,最近有什么关于Python的课程么? 蛋哥,最近有没有测试的直播课额? 蛋哥,…… 应广大群众的强烈呼唤,为了让大家尽可能多的学...

蜗牛学院
2018/04/13
0
0
selenium webdriver (13) -- 结合pyunit生成测试报告

测试包含测试用例设计,测试执行,测试报告输出 测试用例设计一般是静态的,以文档的方式进行存储 测试执行,可以是手动的,也可以自动化用例执行 测试报告,可以是手动的,按照一定格式的测...

terry_hding
2016/08/04
189
0
Python在DevOps中的应用

互联网时代,只有能够快速试验新想法,并在第一时间,安全、可靠的交付业务价值,才能保持竞争力。DevOps推崇的自动化构建/测试/部署,以及系统度量等技术实践,是互联网时代必不可少的。 大...

抚琴煮酒
2018/08/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

告诉大家写简历和面试的技巧(面向高级开发和架构师)

之前我也写过不少介绍面试相关的博文,有些文章的点击量还不低,这些面试相关的经验大多都是从我面试别人的过程中提炼出来了。 在18年底到19年3月,陆续面试了几家公司,有成有不成的,最终进...

java菜分享
21分钟前
0
0
SpringMVC教程3【文件上传下载,静态资源处理及数据校验】

一,文件上传 web.xml配置通用 <?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi......

薛小二
29分钟前
4
0
【跟着我们学Golang】基础结构

鉴于上篇文章我们已经讲过Go语言环境的安装,现在我们已经有了一个可以运行Go程序的环境,而且,我们还运行了'Hello World'跑出了我们的第一个Go程序。 这节我们就以'Hello World为例,讲解G...

搜云库技术团队
32分钟前
1
0
谈谈ConcurrentHashMap1.7和1.8的不同实现

ConcurrentHashMap 在多线程环境下,使用HashMap进行put操作时存在丢失数据的情况,为了避免这种bug的隐患,强烈建议使用ConcurrentHashMap代替HashMap,为了对更深入的了解,本文将对JDK1....

群星纪元
34分钟前
0
0
JBDC更新计数行以及调用存储过程返回多个结果集

在学习该知识点之前,需要了解sqlserver的一个存储过程语句:SET NOCOUNT ON; 执行该命令 表示不返回计数行,什么是计数行了,比如我们执行 DELETE ,UPDATE,INSERT的时候,对多少条数据进行了...

小v来上课
36分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部