Commit 15a3a12b by 左磊磊

add:新增RAYS支付PayCase代码

parent ae0a20a5
......@@ -108,6 +108,47 @@ public class BaseCase {
return flag;
}
/**
* 适用于非Excel接口和用例类型的调用。
* @param expectValue
* @param body
* @return
*/
@Step("响应结果断言")
public Boolean assertRespon(String expectValue,String body){
// 定义断言是否成功,默认失败
boolean flag=false;
//
Object jsonObj = JSONObject.parse(expectValue);
// 如果Case中expectValue是数组类型的JSON格式,那么采用多字段匹配断言逻辑。
if (jsonObj instanceof JSONArray) { // 判断jsonObj是否是JSONArray的对象
// 所有JSON数据转换为集合
List<JsonPathVaildate> list = JSONObject.parseArray(expectValue, JsonPathVaildate.class);
//循环,多关键字段匹配断言
for (JsonPathVaildate jpv : list) {
//一个断言表达式
String expression = jpv.getExpression();
//表达式期望值
String value = jpv.getValue();
//对响应结果进行一个JSONPath,寻找实际的值
String actualValue = JSONPath.read(body, expression) == null ? "" : JSONPath.read(body, expression).toString();
//期望值和实际值进行断言
flag = value.equals(actualValue);
//期望值和实际值进行断言
System.out.println("实际值:" + actualValue + ",预期值:" + value + "断言结果" + value.equals(actualValue));
//判断所有匹配字段是否为true
if (flag == false) {
//说明断言失败
break;
}
}
//如果Case中expectValue不是数组类型的JSON格式,那么采用等值匹配。
} else if (jsonObj instanceof JSONObject) {
flag = body.equals(expectValue);
}
return flag;
}
/**
* 参数化替换方法
......
package com.lemon.cases;
import io.qameta.allure.Description;
import org.apache.http.Header;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.CookieStore;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.testng.Assert;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import java.util.Arrays;
/**
* @program: RaysLearn
* @description: 支付
* @author: ray
* @create: 2023-03-14 09:58
**/
public class PayCase extends BaseCase {
private CookieStore cookie;
private CookieStore cooki;
// 线上环境-RAYS获取商户号支付信息
@Test(dataProvider = "datas0")
@Description("创建支付订单")
public void testPay(int id, String casename, String url, String expectValue) throws Exception {
String cookie = "checkUserInfo=userId=84; userInfo=officialAccountsId=997&channelId=1362&wechatUserId=182833248&hasSnapsis=0&userType=REGULAR&bookId=12567110&adviserId=1362&sceneId=3930381&sourceType=QRCODE&spreadType=0";
// 创建get请求
HttpGet get = new HttpGet(url);
// 传参为JSON类型
get.setHeader("Content-Type", "application/json");
// 创建一个client
DefaultHttpClient client = new DefaultHttpClient();
// 将cookie信息添加到header中
client.setCookieStore(this.cookie);
// 执行get请求,并使用response来存放执行后返回的响应内容
HttpResponse response = client.execute(get);
Header[] header = response.getAllHeaders(); // 响应头
System.out.print("id:" + id + "\n"+ "casename:" + casename+ "\n");
System.out.print("响应头信息:::" + Arrays.toString(header) + "\n");
int status = response.getStatusLine().getStatusCode();
System.out.print("状态码:::" + status + "\n");
HttpEntity entity = response.getEntity(); // 响应体
String body = EntityUtils.toString(entity);
System.out.print("预期结果: " + expectValue+ "\n");
System.out.print("响应结果: " + body+ "\n");
Boolean assertResponseFlag = assertRespon(expectValue, body);
String assertContent = (assertResponseFlag) ? "Pass" : "Fail";
System.out.print("assertContent:"+assertContent);
Assert.assertEquals(assertContent, "Pass");
}
@DataProvider(name = "datas0")
public Object[][] datas0() {
//Object[m][n] m代表执行次数,n代表参数个数
Object[][] datas = {
{1, "RAYS自跳RAYS", "https://weixin23.5rs.me/channelcenter/v1.0/accountSetting/getOpreateManageInfo?officialAccountsId=23", "{\"errCode\":0,\"message\":\"操作成功!\",\"data\":{\"officialAccountsId\":23,\"payAccounts\":23,\"officialAccountsName\":\"书童小睿\",\"domain\":\"weixin23.5rs.me\",\"payDomain\":\"weixin23.5rs.me\",\"manageDomain\":\"wechat22.5rs.me\",\"icon\":\"https://oss.5rs.me/oss/uploadfe/png/942c1c8f4f2a7bc81f82743c48bbaa1a.png\",\"description\":\"属于你的双十一狂欢会\",\"iosAlipayOpen\":0,\"payMchId\":\"1639325477\",\"currentPagePay\":0,\"phoneAuthOpen\":0,\"payMethod\":1}}"}, // RAYS跳RAYS
{2, "蓝海生态跳RAYS", "https://weixin28.5rs.me/channelcenter/v1.0/accountSetting/getOpreateManageInfo?officialAccountsId=28", "{\"errCode\":0,\"message\":\"操作成功!\",\"data\":{\"officialAccountsId\":28,\"payAccounts\":23,\"officialAccountsName\":\"RAYS蓝海生态\",\"domain\":\"weixin28.5rs.me\",\"payDomain\":\"weixin23.5rs.me\",\"manageDomain\":\"wechat22.5rs.me\",\"icon\":\"https://oss.5rs.me/oss/uploadfe/jpg/bbee8ff1fe52e5c58ab669d937a7f406.jpg\",\"description\":\"RAYS,给你别致的读书体验\",\"iosAlipayOpen\":0,\"payMchId\":\"1639325477\",\"currentPagePay\":0,\"phoneAuthOpen\":0,\"payMethod\":1}}"}, // 蓝海生态跳RAYS
{3, "上海教育跳RAYS", "https://weixin65750.rayswdcb.com/channelcenter/v1.0/accountSetting/getOpreateManageInfo?officialAccountsId=65750", "{\"errCode\":0,\"message\":\"操作成功!\",\"data\":{\"officialAccountsId\":65750,\"payAccounts\":23,\"officialAccountsName\":\"上海教育出版社有限公司\",\"domain\":\"weixin65750.rayswdcb.com\",\"payDomain\":\"weixin23.5rs.me\",\"manageDomain\":\"wechat75903.rayswang.com\",\"icon\":\"https://oss.5rs.me/oss/uploadfe/jpg/a7684e17ab41c8e43e7576e7321b8a77.jpg\",\"description\":\"上海教育出版社有限公司\",\"iosAlipayOpen\":0,\"payMchId\":\"1639325477\",\"currentPagePay\":0,\"phoneAuthOpen\":0,\"payMethod\":1}}"}, // 上海教育跳RAYS
{4, "小蓝书跳小蓝书", "https://weixin65842.rayshbjy.com/channelcenter/v1.0/accountSetting/getOpreateManageInfo?officialAccountsId=65842", "{\"errCode\":0,\"message\":\"操作成功!\",\"data\":{\"officialAccountsId\":65842,\"payAccounts\":65967,\"officialAccountsName\":\"小蓝书高中生服务平台\",\"domain\":\"weixin65842.rayshbjy.com\",\"payDomain\":\"wechat65842.rayshbjy.com\",\"manageDomain\":\"wechat65842.rayshbjy.com\",\"icon\":\"https://oss.5rs.me/oss/uploadfe/jpg/3c1aa1fa65912a1a2673bc6ca05039d2.jpg\",\"description\":\"小蓝书携手一线教研专家,为全国高中生提供一站式服务:教育资讯、新高考选科工具,优质图书、课程推荐,专家、学霸交流等。\",\"iosAlipayOpen\":0,\"payMchId\":\"1521882781\",\"currentPagePay\":0,\"phoneAuthOpen\":0,\"payMethod\":1}}"}, // 小蓝书跳小蓝书
{5, "新世纪跳新世纪", "https://weixin65700.rayscjsn.com/channelcenter/v1.0/accountSetting/getOpreateManageInfo?officialAccountsId=65700", "{\"errCode\":0,\"message\":\"操作成功!\",\"data\":{\"officialAccountsId\":65700,\"payAccounts\":65998,\"officialAccountsName\":\"广东新世纪出版社有限公司\",\"domain\":\"weixin65700.rayscjsn.com\",\"payDomain\":\"wechat65700.rayscjsn.com\",\"manageDomain\":\"wechat65700.rayscjsn.com\",\"icon\":\"https://oss.5rs.me/resources/jpg/j5zxhrw9N3EqbCR7oVFTHaP4W2DByZmg.jpg\",\"iosAlipayOpen\":0,\"payMchId\":\"1594177521\",\"currentPagePay\":0,\"phoneAuthOpen\":0,\"payMethod\":1}}"} // 新世纪跳新世纪
};
return datas;
}
// 线上环境-小睿伴学获取支付商户号信息
@Test(dataProvider = "datas1")
@Description("创建支付订单")
public void testRaysPay(int id, String casename, String url, String expectValue) throws Exception {
String cooki = "userInfo=wechatUserId=183639793&officialAccountsId=50687";
// 创建get请求
HttpGet get = new HttpGet(url);
// 传参为JSON类型
get.setHeader("Content-Type", "application/json");
// 创建一个client
DefaultHttpClient client = new DefaultHttpClient();
// 将cookie信息添加到header中
client.setCookieStore(this.cooki);
// 执行get请求,并使用response来存放执行后返回的响应内容
HttpResponse response = client.execute(get);
Header[] header = response.getAllHeaders(); // 响应头
System.out.print("id:" + id + "casename:" + casename);
System.out.print("响应头信息: " + Arrays.toString(header) + "\n");
int status = response.getStatusLine().getStatusCode();
System.out.print("状态码: " + status + "\n");
HttpEntity entity = response.getEntity(); // 响应体
String body = EntityUtils.toString(entity);
System.out.print("预期结果: " + expectValue+ "\n");
System.out.print("响应结果: " + body+ "\n");
Boolean assertResponseFlag = assertRespon(expectValue, body);
String assertContent = (assertResponseFlag) ? "Pass" : "Fail";
System.out.print("assertContent:"+assertContent);
Assert.assertEquals(assertContent, "Pass");
}
@DataProvider(name = "datas1")
public Object[][] datas1() {
//Object[m][n] m代表执行次数,n代表参数个数
Object[][] datas = {
{1, "小睿伴学支付跳RAYS", "https://wechat50687.5rs.me/channelcenter/v1.0/accountSetting/getOpreateManageInfo?officialAccountsId=50687", "{\"errCode\":0,\"message\":\"操作成功!\",\"data\":{\"officialAccountsId\":50687,\"payAccounts\":23,\"officialAccountsName\":\"小睿伴学\",\"domain\":\"wechat50687.5rs.me\",\"payDomain\":\"weixin23.5rs.me\",\"manageDomain\":\"wechat22.5rs.me\",\"icon\":\"https://oss.5rs.me/oss/upload/image/jpg/bb8353c7cec744b99060ca3bf31b72f0.jpg\",\"description\":\"小睿伴学\",\"iosAlipayOpen\":0,\"payMchId\":\"1639325477\",\"currentPagePay\":0,\"phoneAuthOpen\":0,\"payMethod\":1}}"} // 小睿伴学获取支付信息
};
return datas;
}
public static void main(String[] args) {
}
}
......@@ -47,7 +47,6 @@ public class RaysDataCase extends BaseCase {
String assertContent = (assertResponseFlag) ? "Pass" : "Fail";
addWBD(Integer.parseInt(cas.getId()), Constants.ASSERT_RESULT_CELL_NUM, assertContent);
//9、添加日志
//10、报表断言
Assert.assertEquals(assertContent, "Pass");
}
......
com/lemon/cases/RaysDataCase.class
com/lemon/json/POIDemo.class
com/lemon/pojo/JsonPathVaildate.class
com/lemon/cases/PayCase.class
com/lemon/json/PropertiesDemo.class
com/lemon/utils/EmailUtils.class
com/lemon/utils/HttpUtils.class
......
......@@ -12,6 +12,7 @@
/Users/ray/IdeaProjects/Lemon/src/test/java/com/lemon/httpclient/PostDemo2.java
/Users/ray/IdeaProjects/Lemon/src/test/java/com/lemon/utils/MyAuthenticator.java
/Users/ray/IdeaProjects/Lemon/src/test/java/com/lemon/json/PropertiesDemo.java
/Users/ray/IdeaProjects/Lemon/src/test/java/com/lemon/cases/PayCase.java
/Users/ray/IdeaProjects/Lemon/src/test/java/com/lemon/testng/TestNGDataProvider.java
/Users/ray/IdeaProjects/Lemon/src/test/java/com/lemon/json/ParseXmlDemo.java
/Users/ray/IdeaProjects/Lemon/src/test/java/com/lemon/cases/BaseCase.java
......
......@@ -7,6 +7,13 @@
</classes>
</test>
<test name="RAYS支付"> <!-- 模块-->
<classes>
<class name="com.lemon.cases.PayCase"/> <!-- 测试类/用例类-->
</classes>
</test>
<!-- <test name="注册模块"> &lt;!&ndash; 模块&ndash;&gt;-->
<!-- <classes>-->
<!-- <class name="com.lemon.cases.RegisterDemoCase"/> &lt;!&ndash; 测试类/用例类&ndash;&gt;-->
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment