`

基于Junit的HttpUnit测试

阅读更多
看了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();
		}
	}
	
}


0
0
分享到:
评论

相关推荐

    使用HttpUnit进行集成测试

    它基于JUnit构建,并且在功能上做了许多增强,能够帮助开发者有效地完成针对Web应用的功能性测试。HttpUnit提供了一系列API来模拟用户的HTTP请求和处理服务器响应,从而实现自动化测试的目的。 1. **开发背景**:...

    HttpUnit基础教程

    HttpUnit是SourceForge下面的一个开源项目,它是基于JUnit的一个测试框架,主要关注于测试Web应用,解决使用JUnit框架无法对远程Web内容进行测试的弊端。 HttpUnit让测试者可以通过Java类和服务器进行交互,并且将...

    如何利用JUnit进行单元测试.ppt

    HttpUnit是在JUnit之上构建的测试框架,它支持web应用的黑盒测试。它是一种功能测试工具,你可以用它验证软件是否符合业务需求等web应用功能。 ### 3. jWebUnit jWebUnit是在HttpUnit上创建的一个辅助工具包,它...

    如何使用HttpUnit进行集成测试

    如何使用HttpUnit进行集成测试软件测试1HttpUnit简介HttpUnit是SourceForge下面的一个开源项目,它是基于JUnit的一个测试框架,主要关注于测试Web应用,解决使用JUnit框架无法对远程Web内容进行测试的弊端。...

    httpunit-1.7

    1. **创建测试用例**:在Java类中,创建HttpUnit测试用例,定义测试方法,如`@Test`注解的方法。 2. **构建HTTP请求**:使用`WebConversation`或`WebClient`对象,创建`WebRequest`,设置URL、请求方法和参数。 3. *...

    httpunit jar包以及关于它文档

    5. **易于集成**:HTTPUnit 可以轻松地与JUnit或其他测试框架集成,实现自动化测试脚本的编写和执行。 **下载和安装** 在官方站点无法访问或者需要积分的情况下,开发者可以借助社区资源,如CSDN等平台,找到...

    httpunit源代码

    6. 测试框架集成:HTTPUnit常与JUnit、TestNG等测试框架结合使用,源代码中可能包含了与这些框架的接口,方便编写和运行测试。 7. 请求模拟:HTTPUnit提供了丰富的API,使得测试者可以模拟不同的用户行为,如点击...

    httpunit-1.6.2.zip_Httpunit_httpun_httpunit-1.5.41.zip_httpunit-

    8. **易于集成**:它能很好地与JUnit或其他测试框架结合,方便构建自动化测试套件。 通过"www.pudn.com.txt"文件,用户可以获取更多关于这个包的上下文信息,例如可能包含的使用教程、示例代码或者是开发者社区的...

    httpUnit完整的web工程实例,包括源码和依赖包,数据页面具有异步数据

    5. **依赖包**:虽然没有直接列出依赖包的文件,但为了运行这个项目,你需要确保已经安装了JDK 1.8或更高版本,并且项目中包含了所有必要的库,例如HTTPUnit本身和其他可能的依赖,如JUnit(用于编写和运行测试)。...

    JUnit_完整教程_基础_实例

    2. **HttpUnit**:尽管 HttpUnit 不是一款纯粹的测试工具,但它可以作为辅助工具与 JUnit 结合使用,支持对应用程序的工作流程进行功能单元测试。 3. **JsUnit**:针对 JavaScript 的单元测试框架,与 JUnit 类似,...

    HttpUnit基础教程.docx

    HttpUnit 是一个基于Java的开源测试框架,专为测试Web应用程序而设计,它扩展了JUnit,弥补了在JUnit中直接测试远程Web内容的不足。HttpUnit允许开发者通过编写Java代码来模拟浏览器行为,如提交表单、处理...

    HttpUnit 小结

    基于JUnit构建的HttpUnit,旨在弥补JUnit在远程Web内容测试方面的不足。它能够模拟浏览器的行为,执行GET、POST请求,并处理响应中的各种元素(如表格、链接等)。此外,HttpUnit还支持处理JavaScript、Cookies等...

    自动化测试示例TestDemo完善最新版本

    本示例项目"TestDemo"的最新版本专注于自动化测试,集成了JUnit、HttpUnit、JMock以及JUnitEE,并且针对之前版本未支持TestNG的问题进行了完善,以满足更多用户的需求。 首先,JUnit是Java编程语言中最广泛使用的...

    Web自动化测试中的接口测试.pdf

    JWebUnit是一个基于HttpUnit的高级封装,提供了更多的Web测试功能,使得测试Web应用变得更加方便。 为了进行接口测试,测试工程师需要了解HTTP协议。HTTP(超文本传输协议)是用于从Web服务器传输超文本到本地...

    JAVA开源的WEB测试工具

    9. **Slimdog**:基于HttpUnit扩展的轻量级Web测试工具,使用简单脚本语言,方便创建和执行测试案例。 10. **Solex**:Eclipse插件,用于Web应用测试,提供会话录制功能,并能进行详细的测试配置。 11. **...

    软件测试技术在J2EE项目中的应用

    HttpUnit是一个功能测试工具,它可以模拟浏览器行为,通过发送HTTP请求并接收响应来测试Web应用的功能。由于它是黑盒测试工具,测试人员只需关注于测试用例的编写,而不需了解内部实现。 4. 性能测试:在J2EE项目中...

    基于J2EE架构的敏捷开发平台.pdf

    这一实践需要一系列工具支持,如持续集成工具Cruise Control、代码检查工具Checkstyle、源代码控制系统Subversion以及单元测试工具JUnit等。 【敏捷开发平台架构】主要由以下几个组件构成: 1. **开发环境**:...

Global site tag (gtag.js) - Google Analytics