看了taobaoge的junit测试教程,总结下httpunit的使用
httpunit是以junit为基础的一个用来测试html页面内容的测试框架,可以测试的内容如下
1.网站或网页是否存在
2.请求参数的测试和验证
3.响应的测试和验证
4.表格的测试和验证
5.超链接的测试和验证
6.表单的测试和验证
需要将httpunit里面的jars和lib目录下的所有jar包添加到项目中,并且配合junit使用
下面给出关键代码
import static org.junit.Assert.assertEquals;
import java.io.IOException;
import org.junit.Test;
import org.xml.sax.SAXException;
import com.meterware.httpunit.GetMethodWebRequest;
import com.meterware.httpunit.PostMethodWebRequest;
import com.meterware.httpunit.TableCell;
import com.meterware.httpunit.WebConversation;
import com.meterware.httpunit.WebForm;
import com.meterware.httpunit.WebLink;
import com.meterware.httpunit.WebRequest;
import com.meterware.httpunit.WebResponse;
import com.meterware.httpunit.WebTable;
/**
* 关于httpunit类使用的演示
* @author jison
* @since 2015-4-14
*/
public class HttpUnitTest {
/**
* 测试网站或网页是否存在
*/
@Test
public void webExists(){
// 代替浏览器作用的对象
WebConversation webConversation = new WebConversation();
// 请求对象
WebRequest webRequest = new GetMethodWebRequest("http://localhost:8080/HttpUnitDemo/webexists.jsp");
try {
// 响应对象,如果没有抛出异常表明网页存在
WebResponse webResponse = webConversation.getResponse(webRequest);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 把响应页面的内容拿到
*/
@Test
public void webContent(){
// 代替浏览器作用的对象
WebConversation webConversation = new WebConversation();
// 请求对象
WebRequest webRequest = new GetMethodWebRequest("http://localhost:8080/HttpUnitDemo/webexists.jsp");
try {
// 响应对象,如果没有抛出异常表明网页存在
WebResponse webResponse = webConversation.getResponse(webRequest);
// 打印响应页面的内容
System.out.println(webResponse.getText());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 请求参数的测试与验证
*/
@Test
public void webReq(){
// 代替浏览器作用的对象
WebConversation webConversation = new WebConversation();
// 请求对象
WebRequest webRequest = new GetMethodWebRequest("http://localhost:8080/HttpUnitDemo/req.jsp");
// 设置请求的参数
webRequest.setParameter("reqKey", "reqValue");
try {
// 响应对象
WebResponse webResponse = webConversation.getResponse(webRequest);
// 打印响应对象的html页面文本
System.out.println(webResponse.getText());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 页面跳转测试1
* 与预期的请求参数相同
*/
@Test
public void webRedirect() {
// 代替浏览器作用的对象
WebConversation webConversation = new WebConversation();
// 请求对象
WebRequest webRequest = new GetMethodWebRequest("http://localhost:8080/HttpUnitDemo/redirect.jsp");
// 设置请求的参数
webRequest.setParameter("username", "user");
webRequest.setParameter("password", "pass");
try {
// 响应对象
WebResponse webResponse = webConversation.getResponse(webRequest);
// 打印响应对象的html页面文本
System.out.println(webResponse.getText());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 页面跳转测试2
* 与预期的请求参数不相同
*/
@Test
public void webRedirect2() {
// 代替浏览器作用的对象
WebConversation webConversation = new WebConversation();
// 请求对象
WebRequest webRequest = new GetMethodWebRequest("http://localhost:8080/HttpUnitDemo/redirect.jsp");
// 设置请求的参数
webRequest.setParameter("username", "use");
webRequest.setParameter("password", "pass");
try {
// 响应对象
WebResponse webResponse = webConversation.getResponse(webRequest);
// 打印响应对象的html页面文本
System.out.println(webResponse.getText());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 测试表格
*/
@Test
public void webTable(){
// 代替浏览器作用的对象
WebConversation webConversation = new WebConversation();
// 请求对象
WebRequest webRequest = new PostMethodWebRequest("http://localhost:8080/HttpUnitDemo/table.jsp");
try {
// 获取响应对象
WebResponse webResponse = webConversation.getResponse(webRequest);
// 获取表格对象
WebTable webTable = webResponse.getTables()[0];
System.out.println("获取第一个表格的第一行第二列的数据:" + webTable.getCellAsText(0, 1));
// 获取表单中第二行第二列的单元格对象
TableCell tableCell = webTable.getTableCell(1, 1);
// 断言单元格的值知否与预期的值相等
assertEquals("21", tableCell.getText());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 测试超链接
*/
@Test
public void webLink() {
// 代替浏览器作用的对象
WebConversation webConversation = new WebConversation();
// 要测试的页面的请求
WebRequest webRequest = new PostMethodWebRequest("http://localhost:8080/HttpUnitDemo/link.jsp");
try {
WebResponse webResponse = webConversation.getResponse(webRequest);
// 获取文本为“testlink”的超链接
WebLink webLink = webResponse.getLinkWith("testlink");
// 获取超链接对应的请求
WebRequest linkRequest = webLink.getRequest();
// 获取超链接点击后对应的响应
WebResponse linkResponse = webConversation.getResponse(linkRequest);
// 期望的超链接
String expectedURL = "http://localhost:8080/HttpUnitDemo/success.jsp";
// 断言是否与期望的超链接相同
assertEquals(expectedURL, linkResponse.getURL().toString());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 测试表单
*/
@Test
public void webForm(){
// 获取浏览器对象
WebConversation webConversation = new WebConversation();
// 获取请求对象
WebRequest webRequest = new PostMethodWebRequest("http://localhost:8080/HttpUnitDemo/form.jsp");
try {
// 获取响应对象
WebResponse webResponse = webConversation.getResponse(webRequest);
// 获取第一个表单对象
WebForm webForm = webResponse.getForms()[0];
// 断言单行文本域的值
assertEquals("textField", webForm.getParameterValue("textField"));
// 选中的复选按钮的值为on
assertEquals("on", webForm.getParameterValue("checkboxTest"));
// 只有选中的单选按钮取得值才也设置的值一致
assertEquals("radioTest1", webForm.getParameterValue("radioTest1"));
// // 未选中的单选按钮的值与设置的值不一致
// assertEquals("radioTest2", webForm.getParameterValue("radioTest2"));
// 断言下拉列表框
assertEquals("option2", webForm.getParameterValue("selectTest"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
分享到:
相关推荐
它基于JUnit构建,并且在功能上做了许多增强,能够帮助开发者有效地完成针对Web应用的功能性测试。HttpUnit提供了一系列API来模拟用户的HTTP请求和处理服务器响应,从而实现自动化测试的目的。 1. **开发背景**:...
HttpUnit是SourceForge下面的一个开源项目,它是基于JUnit的一个测试框架,主要关注于测试Web应用,解决使用JUnit框架无法对远程Web内容进行测试的弊端。 HttpUnit让测试者可以通过Java类和服务器进行交互,并且将...
HttpUnit是在JUnit之上构建的测试框架,它支持web应用的黑盒测试。它是一种功能测试工具,你可以用它验证软件是否符合业务需求等web应用功能。 ### 3. jWebUnit jWebUnit是在HttpUnit上创建的一个辅助工具包,它...
如何使用HttpUnit进行集成测试软件测试1HttpUnit简介HttpUnit是SourceForge下面的一个开源项目,它是基于JUnit的一个测试框架,主要关注于测试Web应用,解决使用JUnit框架无法对远程Web内容进行测试的弊端。...
1. **创建测试用例**:在Java类中,创建HttpUnit测试用例,定义测试方法,如`@Test`注解的方法。 2. **构建HTTP请求**:使用`WebConversation`或`WebClient`对象,创建`WebRequest`,设置URL、请求方法和参数。 3. *...
5. **易于集成**:HTTPUnit 可以轻松地与JUnit或其他测试框架集成,实现自动化测试脚本的编写和执行。 **下载和安装** 在官方站点无法访问或者需要积分的情况下,开发者可以借助社区资源,如CSDN等平台,找到...
6. 测试框架集成:HTTPUnit常与JUnit、TestNG等测试框架结合使用,源代码中可能包含了与这些框架的接口,方便编写和运行测试。 7. 请求模拟:HTTPUnit提供了丰富的API,使得测试者可以模拟不同的用户行为,如点击...
8. **易于集成**:它能很好地与JUnit或其他测试框架结合,方便构建自动化测试套件。 通过"www.pudn.com.txt"文件,用户可以获取更多关于这个包的上下文信息,例如可能包含的使用教程、示例代码或者是开发者社区的...
5. **依赖包**:虽然没有直接列出依赖包的文件,但为了运行这个项目,你需要确保已经安装了JDK 1.8或更高版本,并且项目中包含了所有必要的库,例如HTTPUnit本身和其他可能的依赖,如JUnit(用于编写和运行测试)。...
2. **HttpUnit**:尽管 HttpUnit 不是一款纯粹的测试工具,但它可以作为辅助工具与 JUnit 结合使用,支持对应用程序的工作流程进行功能单元测试。 3. **JsUnit**:针对 JavaScript 的单元测试框架,与 JUnit 类似,...
HttpUnit 是一个基于Java的开源测试框架,专为测试Web应用程序而设计,它扩展了JUnit,弥补了在JUnit中直接测试远程Web内容的不足。HttpUnit允许开发者通过编写Java代码来模拟浏览器行为,如提交表单、处理...
基于JUnit构建的HttpUnit,旨在弥补JUnit在远程Web内容测试方面的不足。它能够模拟浏览器的行为,执行GET、POST请求,并处理响应中的各种元素(如表格、链接等)。此外,HttpUnit还支持处理JavaScript、Cookies等...
本示例项目"TestDemo"的最新版本专注于自动化测试,集成了JUnit、HttpUnit、JMock以及JUnitEE,并且针对之前版本未支持TestNG的问题进行了完善,以满足更多用户的需求。 首先,JUnit是Java编程语言中最广泛使用的...
JWebUnit是一个基于HttpUnit的高级封装,提供了更多的Web测试功能,使得测试Web应用变得更加方便。 为了进行接口测试,测试工程师需要了解HTTP协议。HTTP(超文本传输协议)是用于从Web服务器传输超文本到本地...
9. **Slimdog**:基于HttpUnit扩展的轻量级Web测试工具,使用简单脚本语言,方便创建和执行测试案例。 10. **Solex**:Eclipse插件,用于Web应用测试,提供会话录制功能,并能进行详细的测试配置。 11. **...
HttpUnit是一个功能测试工具,它可以模拟浏览器行为,通过发送HTTP请求并接收响应来测试Web应用的功能。由于它是黑盒测试工具,测试人员只需关注于测试用例的编写,而不需了解内部实现。 4. 性能测试:在J2EE项目中...
这一实践需要一系列工具支持,如持续集成工具Cruise Control、代码检查工具Checkstyle、源代码控制系统Subversion以及单元测试工具JUnit等。 【敏捷开发平台架构】主要由以下几个组件构成: 1. **开发环境**:...