2022年HttpUnit基础教程 .pdf
《2022年HttpUnit基础教程 .pdf》由会员分享,可在线阅读,更多相关《2022年HttpUnit基础教程 .pdf(24页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、TIB 自动化测试工作室http:/ 简介主页:http:/ HttpUnit 是 SourceForge 下面的一个开源项目,它是基于JUnit 的一个测试框架,主要关注于测试 Web 应用,解决使用JUnit 框架无法对远程Web 内容进行测试的弊端。HttpUnit让测试者可以通过Java 类和服务器进行交互,并且将服务器端的响应当作文本或者 DOM对象进行处理。HttpUnit还提供了一个模拟Servlet 容器,让你可以不需要发布Servlet,就可以对Servlet 的内部代码进行测试。为了让 HtpUnit 正常运行,需要安装JDK1.3.1 或者以上版本。Automated t
2、esting is a great way to ensure that code being maintained works. The Extreme Programming (XP) methodology relies heavily on it, and practitioners have available to them a range of testing frameworks , most of which work by making direct calls to the code being tested. But what if you want to test a
3、 web application? Or what if you simply want to use a web-site as part of a distributed application? In either case, you need to be able to bypass the browser and access your site from a program. HttpUnit makes this easy. Written in Java, HttpUnit emulates the relevant portions of browser behavior,
4、including form submission, JavaScript , basic http authentication, cookies and automatic page redirection, and allows Java test code to examine returned pages either as text, an XML DOM, or containers of forms, tables, and links. When combined with a framework such as JUnit , it is fairly easy to wr
5、ite tests that very quickly verify the functioning of a web site. The same techniques used to test web sites can be used to test and develop servlets without a servlet container using ServletUnit, included in the download. 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - -
6、 第 1 页,共 24 页 - - - - - - - - - HTTPUnit的工作原理:HttpUnit 通过模拟浏览器的行为,处理页面框架(frames),cookies,页面跳转( redirects)等。通过HttpUnit提供的功能,你可以和服务器端进行信息交互,将返回的网页内容作为普通文本、 XML DOM对象或者是作为链接、页面框架、图像、表单、表格等的集合进行处理。可以结合使用JUnit 框架进行测试。还可以导向一个新的页面,然后进行新页面的处理,这个功能使你可以处理一组在一个操作链中的页面。WebConversation类模拟浏览器与网站服务器进行交互WebRequest类
7、发送请求WebResponse类接收响应getText getURL getTables getLinks、getLinkWith getForms 可以测试:1、测试某个指定的页面是否存在2、测试页面跳转是否正确3、测试页面内容是否正确4、测试链接5、测试表单HTTPUnit和其他商业工具的对比:商业工具一般使用记录、回放的功能来实现测试,但是这里有个缺陷,就是当页面设计被修改以后,这些被记录的行为就不能重用了,需要重新录制才能继续测试。举个例子:如果页面上有个元素最先的设计是采用单选框,这个时候你开始测试,那么这些工具记录的就是你的单项选择动作,但是如果你的设计发生了变化,比如说我改成了下
8、拉选择,或者使用文本框接受用户输入,这时候,你以前录制的测试过程就无效了,必须要重新录制。而 HttpUnit因为关注点是这些控件的内容,所以不管你的外在表现形式如何变化,都不影响你已确定测试的可重用性。目前最新版本:20 May 2008 HttpUnit 1.7 released名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 24 页 - - - - - - - - - 下载并解压HttpUnit 之后,目录结构应该如下所示:httpunit +- jars / 包含
9、创建、测试以及运行HttpUnit 所必须的 jar | +- lib / 包含 HttpUnit jar | +- doc /文档| | | +- tutorial /基于 servlet web 网站的测试优先开发的简单教程| | | +- api / javadoc | | | +- manual / 用户手册| +- examples / 采用 HttpUnit 编写的一些示例程序| +- src / HttpUnit 源代码| +- test / HttpUnit 单元测试的一些很好的例子只有 lib 和 jars 两个目录对运行HttpUnit 是必须的。至少你必须将HttpUni
10、t jar 添加到系统的 classpath,而其他的一些jar 均为可选。HttpUnit 包括许多可选的功能。如果你并不需要这些功能,则不必在classpath中包含相应的库但至少你必须有一个HTML 解析器(JTidy 和 NekoHTML都可被支持) 和一个与jaxp兼容的解析器(在发行版中包含了xerces 2.2) 。Jar 名称所需关系相关文档nekohtml.jar HTML解析器即使是再糟糕的HTML也可适用。需要 xerces-j 2.2 或更高版本www.apache.org/andyc/neko/doc/html/index.html. tidy.jar 要求苛刻的HT
11、ML解析器。可与任何兼容jaxp 解析器配合使用 xmlParserAPIs.jar 支持 xerces-j 的通用解析API xml.apache.org xercesImpl.jar xerces-j 2.2 可执行单元xml.apache.org js.jar 支持 javascript www.mozilla.org/rhino servlet.jar servlet单 元 测 试 工 具ServletUnit 所必须的J junit.jar 运行单元测试www.junit.org mail.jar 测试文件的上传功能(运行HttpUnit 本身并不需要)J activation.ja
12、r 测试文件的上传功能(运行HttpUnit 本身并不需要)J 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 24 页 - - - - - - - - - 直接获取页面内容The very first step in any interaction with a web site is to obtain a start page. To do this, we create a WebConversationobject to play the role of the
13、 web browser. This object will store browser state such a cookies, windows, and so on. We then ask for the page by specifying the desired URL: WebConversation wc = new WebConversation(); WebResponse wr = wc.getResponse( http:/ ); System.out.println( wr.getText() ); This example will simply print out
14、 the text of the retrieved page. Obviously, given this text, it is easy to search for particular strings on the page, if that is desired. 在 Eclipse 中使用 HttpUnit :import java.io.IOException; import org.xml.sax.SAXException; import com.meterware.httpunit.*; publicclass Test 名师资料总结 - - -精品资料欢迎下载 - - -
15、- - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 24 页 - - - - - - - - - /* *paramargs*/publicstaticvoid main(String args) WebConversation wc = new WebConversation(); WebResponse wr = null; try wr = wc.getResponse( http:/127.0.0.1:1080/WebTours/ ); System.out .println( wr.getText() ); catch
16、 (IOException e) e.printStackTrace(); catch (SAXException e) e.printStackTrace(); 通过 Get 方法访问页面并且加入参数例:System.out .println( 向服务器发送数据,然后获取网页内容: ); /建立一个 WebConversation实例WebConversation wc = new WebConversation(); /向指定的 URL发出请求WebRequest req = newGetMethodWebRequest( http:/127.0.0.1:1080/WebTours/nav
17、.pl); /给请求加上参数req.setParameter(in, home); /获取响应对象WebResponse resp; try resp = wc.getResponse( req ); /用 getText方法获取相应的全部内容/用 System.out.println将获取的内容打印在控制台上System.out .println( resp.getText() ); catch (IOException e) e.printStackTrace(); catch (SAXException e) e.printStackTrace(); 名师资料总结 - - -精品资料欢迎
18、下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 24 页 - - - - - - - - - 测试 WebTours 的例子:import java.io.IOException; import org.xml.sax.SAXException; import com.meterware.httpunit.*; public class Test /* * param args */ public static void main(String args) WebConversation wc = new
19、WebConversation(); WebResponse wr = null; String userSession = ; try wr = wc.getResponse( http:/127.0.0.1:1080/WebTours/ ); wr = wc.getResponse(http:/127.0.0.1:1080/WebTours/header.html); wr = wc.getResponse(http:/127.0.0.1:1080/WebTours/welcome.pl?signOff=1); /wr = wc.getResponse(http:/127.0.0.1:10
20、80/WebTours/images/hp_logo.png); /wr = wc.getResponse(http:/127.0.0.1:1080/WebTours/images/webtours.png); wr = wc.getResponse(http:/127.0.0.1:1080/WebTours/nav.pl?in=home); String responseText = wr.getText() ; System.out.println( responseText ); String toFind = userSession value=; int LB = responseT
21、ext.indexOf(toFind) + toFind.length(); int RB = responseText.indexOf(,LB); userSession = responseText.substring(LB,RB); System.out.println(userSession value = + userSession); catch (IOException e) e.printStackTrace(); catch (SAXException e) e.printStackTrace(); System.out.println( 向服务器发送数据,然后获取网页内容:
22、); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 24 页 - - - - - - - - - /建立一个 WebConversation 实例/WebConversation wc = new WebConversation(); /向指定的 URL 发出请求WebRequest req = new GetMethodWebRequest( http:/127.0.0.1:1080/WebTours/login.pl); /给请求加上参数req.setParamet
23、er(userSession,userSession); req.setParameter(username,jojo); req.setParameter(password,bean); req.setParameter(JSFormSubmit,off); req.setParameter(login.x,54); req.setParameter(login.y,13); /获取响应对象WebResponse resp; try resp = wc.getResponse( req ); /用 getText 方法获取相应的全部内容/用 System.out.println 将获取的内容
24、打印在控制台上System.out.println( resp.getText() ); catch (IOException e) e.printStackTrace(); catch (SAXException e) e.printStackTrace(); 通过 Post方法访问页面并且加入参数例:System.out .println( 向服务器发送数据,然后获取网页内容: ); /建立一个 WebConversation实例/WebConversation wc = new WebConversation(); /向指定的 URL发出请求WebRequest req = newPos
25、tMethodWebRequest( http:/127.0.0.1:1080/WebTours/login.pl); /给请求加上参数req.setParameter(userSession,userSession); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 24 页 - - - - - - - - - req.setParameter(username, jojo); req.setParameter(password, bean); req.setParam
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年HttpUnit基础教程 2022 HttpUnit 基础教程
限制150内