Fitnesse-03-DDT表格例子

1、Fitnesse代码:

!*> 使用 slim 引擎
!define TEST_SYSTEM {slim}
*!
!*> 指定 classpath 路径
!path C:\03=Workspaces\eclipse1\Demo_Fitnesse\fitnessejar\fitnesse-standalone.jar
!path C:\03=Workspaces\eclipse1\Demo_Fitnesse\bin
!path C:\03=Workspaces\eclipse1\Demo_Fitnesse\libs\*.jar
*!
!*> 引入 java包 路径
!|import                           |
|org.xxxx.fitnesse                 |
*!

|ddt:org.xxxx.fitnesse.UserControl |
|user id  |user pass|user login?   |
|system   |system   |OK            |

|ddt:org.xxxx.fitnesse.UserControl |
|user id  |user delete one?        |
|1001     |OK                      |
|1002     |ERROR:NO-USER           |
|1007     |ERROR:NO-USER           |

|ddt:org.xxxx.fitnesse.UserControl |
|user id  |user name|user nick name|user pass|user email   |user is work|user reg time                 |user role|user notes|user pass wrong|user pass history|user add?   |
|1001     |xiaoluo  |xdd           |1001     |xdd@test.com |1           |!today (yyyy-MM-dd hh:mm:ss)  |OP       |测试01    |               |                 |OK          |
|1002     |zhangsan |zgg           |1002     |zgg@test.com |0           |!today (yyyy-MM-dd hh:mm:ss)  |OP       |测试02    |               |                 |OK          |
|1007     |cloudy   |cjj           |1007     |cjj@test.com |0           |!today (yyyy-MM-dd hh:mm:ss)  |ADMIN    |测试03    |               |                 |OK          |

|ddt:org.xxxx.fitnesse.UserControl |
|user id  |user delete two?        |
|1002     |OK                      |
|1007     |OK                      |

2、Fitnesse对应的java代码:

package org.xxxx.fitnesse;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.xxxx.fitnesse.dto.Userinfo;
import org.xxxx.fitnesse.utils.HttpUtils;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;

public class UserControl {
	private static final Logger log = LoggerFactory.getLogger(UserControl.class);

	private String userId;// 登陆帐号
    private String userName;// 用户姓名
    private String userNickName; // 用户昵称
    private String userPass;// 登陆密码
    private String userEmail;// 邮箱(用户自身重置密码时可输入邮箱来重置,系统自动发邮件)
    private String userIsWork; // 是否生效:1=是,0=否
    private String userRegTime;// 创建时间
    private String userRole;// 角色:系统管理员SA(重置密码)、普通业务员(任务操作人)OP、业务经理(审核是否可以运行任务)ADMIN
    private String userNotes;// 备注
    private String userPassWrong; //密码错误日期和次数,类似:20190101:2 
    private String userPassHistory; //密码历史 
    
    private final String ENCODING  = "UTF-8";
    private final String HTTPSLINK = "https://***:8443";
    private final String ACTION1   = "/loginSubmit";
    private final String ACTION2   = "/userAdd";
    private final String ACTION3   = "/userDelete";
	/**
	 * 执行函数
	 * @param header 假如页面有多个“?”的返回,那么这里就判断“header=某个?”,然后再返回这个"?"对应的结果
	 * @return
	 */
	public String get(String header) {
		String rs = "OK";		
		if(header.equals("user login")){
			Userinfo paras0 = setUserinfo();
			JSONObject jsonObject = sendPost( HTTPSLINK+ACTION1,paras0);
			if ((int) jsonObject.get("code") == -1) {
				rs = (String) jsonObject.get("msg");
				if( rs.toLowerCase().contains("username or password is wrong") ){
					rs="ERROR:WRONG";
				}
				if( rs.toLowerCase().contains("user account was locked") ){
					rs="ERROR:LOCKED";
				}
			}
			return rs;
		}
		
		if( header.equals("user add") ){	
			Userinfo paras0 = setUserinfo();	
			JSONObject jsonObject = sendPost( HTTPSLINK+ACTION2,paras0);
			if ((int) jsonObject.get("code") == -1) {
				rs = (String) jsonObject.get("msg");
				if( rs.toLowerCase().contains("user exits") ){
					rs="ERROR:EXITS";
				}
			}
			return rs;
		}
		
		if( header.equals("user delete one") || header.equals("user delete two") ){	
			Userinfo paras0 = setUserinfo();
			JSONObject jsonObject = sendPost( HTTPSLINK+ACTION3,paras0);
			if ((int) jsonObject.get("code") == -1) {
				rs = (String) jsonObject.get("msg");
				if( rs.toLowerCase().contains("user's id is null") ){
					rs="ERROR:NULL-ID";
				}
				if( rs.toLowerCase().contains("user not exits") ){
					rs="ERROR:NO-USER";
				}
			}
			return rs;
		}
		
		HttpUtils.close();
		return rs;
	}

	private Userinfo setUserinfo( ){
		Userinfo paras0 = new Userinfo();
		paras0.setuId(userId);
		paras0.setuName(userName);		
		paras0.setuNickName(userNickName);		
		paras0.setuPass(userPass);
		paras0.setuEmail(userEmail);
		paras0.setIsWork(userIsWork);
		paras0.setRegTime(userRegTime);
		paras0.setuRole(userRole);
		paras0.setNotes(userNotes);		
		paras0.setuPassWrong(userPassWrong);
		paras0.setuPassHistory(userPassHistory);
		return paras0;
	}
	
	private JSONObject sendPost(String URL, Userinfo paras0){
		String paras = JSON.toJSONString(paras0);
		log.info("Sent Contents:{}" ,paras);
		String result = HttpUtils.sendPostSSL(URL, paras, ENCODING);
		JSONObject jsonObject = JSON.parseObject(result);
		log.info("Received Contents:{}" ,result);
		return jsonObject;
	}
	
	
	/**
	 * 相当于 setter 函数,只是把多个参数放到一个方法里面去set
	 * @param header html 页面的表头参数
	 * @param value  该参数传过来的值
	 */
	public void set(String header, Object value) {
		if( header.equals("user id") ){
			this.userId = (String)value;
		}
		if( header.equals("user name") ){
			this.userName = (String)value;
		}
		if( header.equals("user nick name") ){
			this.userNickName = (String)value;
		}
		if( header.equals("user pass") ){
			this.userPass = (String)value;
		}
		if( header.equals("user email") ){
			this.userEmail = (String)value;
		}
		if( header.equals("user is work") ){
			this.userIsWork = (String)value;
		}
		if( header.equals("user reg time") ){
			this.userRegTime = (String)value;
		}
		if( header.equals("user role") ){
			this.userRole = (String)value;
		}
		if( header.equals("user notes") ){
			this.userNotes = (String)value;
		}
		if( header.equals("user pass wrong") ){
			this.userPassWrong = (String)value;
		}
		if( header.equals("user pass history") ){
			this.userPassHistory = (String)value;
		}
	}
}

3、HttpUtils.java 工具类

package org.xxxx.fitnesse.utils;

import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.util.EntityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


/**
 * @Description:发送http请求帮助类
 * @author:liuyc
 * @time:2016年5月17日 下午3:25:32
 */
public class HttpUtils {
	private static final Logger log = LoggerFactory.getLogger(HttpUtils.class);
	
	private static CloseableHttpClient  httpClient = null; // HttpClient-v4.3 开始用
	
	public static String sendPostSSL(String url, String jsonstr, String charset) {
		HttpPost httpPost = null;
		String result = null;
		try {
			if(null==httpClient){
				httpClient = new SSLClient();
			}
			httpPost = new HttpPost(url);

			StringEntity se = new StringEntity(jsonstr, charset);
			se.setContentType("application/json");
			se.setContentEncoding(charset);
			httpPost.setEntity(se);

			CloseableHttpResponse response = httpClient.execute(httpPost);
			if (response != null) {
				HttpEntity resEntity = response.getEntity();
				
				if (resEntity != null) {
					result = EntityUtils.toString(resEntity, charset);
				}
			}			
		} catch (Exception e) {
			log.error(e.getMessage(), e);
		} finally {

		}
		return result;
	}
	
	
	public static void close(){
		try {
			if(null!=httpClient){
				httpClient.close();
				log.warn("httpClient 已关闭");
			}
		} catch (Exception e) {
			log.error(e.getMessage(), e);
		}
	}
}

4、其他需要的:需要有对应的接口工程,并且已经启动,并且有对应的返回逻辑。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值