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

第十一章 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

[email protected]:/home/fnngj/Python/pyse#cd ~/.ssh

[email protected]:~/.ssh#pwd

/root/.ssh

生成新的SSH 秘钥

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

[email protected]:~/.ssh#ssh-keygen-t rsa -C [email protected]

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

3)        添加SSH 公钥到GitCafe

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

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

4)        测试链接

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

[email protected]:~/.ssh#ssh -T
[email protected]

11.1.1 提交代码

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

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

        [email protected]:/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

[email protected]:/home/fnngj#git config--global user.name ‘fnngj‘

[email protected]:/home/fnngj#git config--global user.email ‘[email protected]‘

在本地创建一个项目:Ubuntu

[email protected]:/home/fnngj/pyse#
ls

baidu.py baidu.py~

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

Ubuntu

[email protected]:/home/fnngj/pyse#git init

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

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

Ubuntu

[email protected]:/home/fnngj/pyse#
git status

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

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

[email protected]:/home/fnngj/pyse#git add .

[email protected]:/home/fnngj/pyse# git status

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

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

[email protected]:/home/fnngj/pyse# git commit-m ‘first commit file‘

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

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

Ubuntu

root:/home/fnngj/pyse#git remoteadd origin ‘[email protected]:fnngj/pyse.git‘

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

git remote add origin‘[email protected]: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 [email protected]

提交代码到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 项目。

[email protected]:fnngj/pyse.git

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

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

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

/Python_selenium2$ git remote add origin‘[email protected]: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/

http://gitcd.com/

 

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

[email protected]:sudoapt-get install git-core

[email protected]:sudoapt-get install openssh-server

[email protected]:sudoapt-get install openssh-client

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

[email protected]:/home/fnngj# addusergituser

3、切换到gituser 用户

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

[email protected]:~$ pwd --查看当前路径

[email protected]:~$ mkdir git--创建git
目录

[email protected]:~$ cd git/ --进入git
目录

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

4、创建git-test.git项目

[email protected]:~/git$git --bareinit git-test.git --
创建git-test.git
仓库

现在创建了一个空项目。

11.2.2 检查连接

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

查看虚拟机IP:

[email protected]:/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 项目。

克隆项目到本地:

/git1$ git clone [email protected]:/home/gituser/git/git-test.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 项目。

克隆项目到本地:

/git2$ git clone [email protected]:/home/gituser/git/git-test.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 等版本控制工具集合,使版本工具发生更新时进行项目的构建。

时间: 2024-10-03 00:39:12

Selenium2 Python 自动化测试实战学习笔记(九)的相关文章

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

Selenium  Grid2 利用Grid可以在不同的主机上建立主节点(hub)和分支节点(node).使主节点上的测试用例在不同的分支节点上运行,可以搭建不同的环境,从而使一份测试用例完成在不同环境下的验证.Selenium Grid2已经集成到selenium server中了(selenium-server-stanalon-xxx.jar包中). 9.1 Selenium2工作原理 Selenium2 中因为使用的WebDriver,这个技术不是靠js 驱动的,而是直接调用浏览器的原生

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

7.1 自动化测试用例 不管是功能测试.性能测试和自动化测试时都需要编写测试用例,测试用例的好坏能准确的体现了测试人员的经验.能力以及对项目的深度理解. 7.1.1 手工测试用例与自动化测试用例 手工测试用例是针对手工测试人员,自动化测试用例是针对自动化测试框架,前者是手工测试用例人员应用手工方式进行用例解析,后者是应用脚本技术进行用例解析. 前者具有较好的异常处理能力,而且能够基于测试用例,制造各种不同的逻辑判断,而且人工测试步步跟踪,能够细致定位问题.后者完全按照测试用例的步骤进行测试,只能

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

4.9 多表单切换 在web应用中经常会遇到frame嵌套页面的应用,webdriver每次只能在一个页面上识别元素,对于frame嵌套的页面上的元素,直接定位是定位不到的,这时候就需要switch_to_frame()方法将当前定位的主体切换到frame里.Frame.htm:frame.htm, 直接定位百度的输入框一定会报找不到元素的错误.那么可以使用switch_to_frame()先找到frame.html 中的<iframe>标签,然后再定位百度输入框.switch_to_fram

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

1.1 创建定时任务 为了让自动化测试"自动化"起来,现在我们来创建定时任务,使自动化测试脚本在指定的时间自动化运行.创建定时任务的方法有很多,比如,我们可以写一段程序让其在指定的时间运行all_test.py 文件,或者使用系统的定时任务功能在指定的时间运行all_test.py文件. 在python的os模块中提供了system()用来执行系统命令.比如要执行:UnitTest\Project\run_all.py 可以这样实现:start_run.py #coding=utf-8

Selenium2+Python自动化测试实战

本人在网上查找了很多做自动化的教程和实例,偶然的一个机会接触到了selenium,觉得非常好用.后来就在网上查阅各种selenium的教程,但是网上的东西真的是太多了,以至于很多东西参考完后无法系统的学习和应用,有一次在网上随意搜索,找到了-虫师-写的<Selenium2自动化测试实战基于Python语言>,觉得真心不错,内容也很调理,为了方便自己学习和知识的整理,就把其中虫师编写的自动化项目教程整理一下,有兴趣的可以去参看虫师的博客http://www.cnblogs.com/fnng/ 以

《selenium2 python 自动化测试实战》(5)——键盘事件

键盘事件,就是键盘上的一些操作,比如Ctrl +C,Ctrl+V,Ctrl+X等. 对键盘的操作需要导入另一个键盘的库: from selenium.webdriver.common.keys import Keys 举个例子,你要在搜索框输入"自动化测试",但是现在又想搜"自动化测",就是删掉一个字,我们知道,就是摁一下键盘上的Backspace键就可以了,这时候你就需要键盘操作了: driver.find_element_by_xpath("xpath

《selenium2 python 自动化测试实战》(8)——定位iframe

我们来看一段最早的代码: # coding: utf-8 from selenium import webdriverfrom time import sleep driver = webdriver.Firefox() driver.get("http://blog.hexun.com/") driver.find_element_by_id("read_btn").click() driver.maximize_window() sleep(3)driver.f

《selenium2 python 自动化测试实战》(9)——切换窗口

有时候我们点击按钮后页面会跳转到新的窗口,我们需要到新的窗口中去进行接下来的操作,这时候就需要切换窗口的操作,我们根据句柄(handle)来操作窗口之间的切换,看代码: # coding: utf-8from selenium import webdriverfrom time import sleep driver = webdriver.Firefox() driver.get("http://www.jrj.com.cn/") driver.find_element_by_xpa

《selenium2 python 自动化测试实战》(11)——selenium安装版本

先和大家说一下selenium环境的问题,大家可以在cmd里先看一下自己的selenium版本: 回车,就可以安装了. 本来想和大家说如何跳过验证码进行登录的,结果好多朋友加我问我环境配置的问题,所以觉得还是和大家详细的说明一下,我也自己做一下记录.大家可以提前看一下跳过验证码登录的问题.大家需要下载fiddler,一个很好用的工具,如果你在做手机App测试,应该很了解fiddler,因为需要用fiddler配置手机代理. 微信公众号搜索"自动化测试实战"或扫描下方二维码添加关注~~~