<img src="https://github.com/Qingquanlv/testflow_api/blob/master/testflow.png" width = 40% height = 40% />
### introduction:
目前随着测试场景的复杂性增加,仅仅通过发送Request对比固定Responce的方式已经很难覆盖现有接口测试场景。所以这个时候你需要End-To-End testing模式的testflow_api.
### architecture:
<img src="https://github.com/Qingquanlv/testflow_api/blob/master/liuchengtu.png" width = 100% height = 100% />
#### testflow_API的优势:
#### 1. 易用性
Testflow_api目前支持两种模式,java代码模式和XML模式。一行代码搞定接口测试。
##### java代码模式:
```java
TestFlowManager.runner().sendRequest("",
"https://free-api.heweather.net/s6/weather/forecast?location=beijing&key=245b7545b69b4b4a9bc2a7e497a88b01",
"weather");
```
##### xml模式:
```xml
<request id="weather" method="post" contenttype="json">
<url>https://free-api.heweather.net/s6/weather/forecast?location=beijing&key=245b7545b69b4b4a9bc2a7e497a88b01</url>
<body>
{
}
</body>
</request>
```
```java
@TestFlowTest(path = "src\\main\\resources\\weather.xml")
public void test(Map<String, String> map) {
TestFlowFileManager.runner().executeFile(map, "src\\main\\resources\\weather.xml");
TestFlowManager.runner().deposed();
}
```
#### 2. End-To-End testing
Testflow_api提供sendRquest,Parse,QueryDB,Veryfy四类方法和缓存机制模拟完整的调用链。
##### java代码模式:
```java
//发送请求,使用子类重写模式parse返回报文,再验证对比返回实体的所有字段值
@Test
public void example4() {
TestFlowManager.runner().sendRequest("",
"https://free-api.heweather.net/s6/weather/forecast?location=beijing&key=245b7545b69b4b4a9bc2a7e497a88b01",
"weather1"
).overrideParse("com.testflow.apitest.testentity.JsonsRootBean",
"weather1",
"weather2", new DataParser<JsonsRootBean, JsonsRootBean>() {
@Override
public JsonsRootBean parse(JsonsRootBean sourceData) {
JsonsRootBean tar = new JsonsRootBean();
tar.setHeweather6(sourceData.getHeweather6());
return tar;
}
}).verify("com.testflow.apitest.testentity.JsonsRootBean",
"weather1",
"weather2",
"Heweather6:{status}, Daily_forecast:{cond_code_d, cond_code_n}",
"Daily_forecast:{wind_dir}");
}
```
##### xml模式:
```xml
<feature name="weather">
<given>
<dataloader>
<parame parame1 = 'parame1' />
</dataloader>
<classloader>
<!--<class>src\main\resources\clazz</class>-->
</classloader>
<packageloader>
<!--<package>src\main\resources\packages</package>-->
</packageloader>
</given>
<when>
<request id="weather1" method="post" contenttype="json">
<url>https://free-api.heweather.net/s6/weather/forecast?location=beijing&key=245b7545b69b4b4a9bc2a7e497a88b01</url>
<body>
{
}
</body>
</request>
<parse id="weather2" type="source">
<source>
<parame type = 'com.testflow.apitest.testentity.JsonsRootBean' value = 'weather1'/>
<return type = 'com.testflow.apitest.testentity.JsonsRootBean'/>
<method name = 'convertMethod'>
public JsonsRootBean convertMethod(JsonsRootBean sourceData) {
JsonsRootBean tar = new JsonsRootBean();
tar.setHeweather6(sourceData.getHeweather6());
return tar;
}
</method>
</source>
</parse>
</when>
<then>
<verify id="verify" type="entity">
<entitys type="com.testflow.apitest.testentity.JsonsRootBean">
<entity>weather1</entity>
<entity>weather2</entity>
</entitys>
<pkkeys>
<pkkey>Heweather6:{status}</pkkey>
<pkkey>Daily_forecast:{cond_code_d, cond_code_n}</pkkey>
</pkkeys>
<nocomparekeys>
<nocomparekey>Daily_forecast:{wind_dir}</nocomparekey>
</nocomparekeys>
</verify>
</then>
<config>
</config>
</feature>
```
#### 3. 数据驱动
Testflow_api支持数据驱动模式。
##### java代码模式:
Java代码可以采用Junit数据驱动的方法,这里就不过多介绍。
##### xml模式:
xml可以使用dataloader标签
```xml
<given>
<dataloader>
<parame parame1 = 'parame1' parame2 = 'parame2' />
</dataloader>
</given>
```
#### 4. 支持DataBase操作
Testflow_api支持基于Mybatis的数据库增删改查操作。
##### java代码模式:
```java
TestFlowManager.runner().queryDataBase(parmeType, sqlStr);
```
##### xml模式:
```xml
<database id="table">
<sql>
SELECT * FROM table
</sql>
</database>
```
#### 5. 多样的断言方法
Testflow_api支持多种的断言方法。
##### 验证实体中任一字段值:
```java
verify("weather2","/HeWeather6/*[0]/basic/location","Beijing");
```
##### 直接对比两个JSON String:
```java
verify("weather1", "weather2");
```
##### 对比两个实体(包括实体中不对比key和List实体的主键)
##### java代码模式:
```java
.verify("com.testflow.apitest.testentity.JsonsRootBean", //对比实体类型
"weather1",
"weather2",
"Heweather6:{status}, Daily_forecast:{cond_code_d, cond_code_n}", //对比实体中的List主键
"Daily_forecast:{wind_dir}") //对比实体中不对比字段
```
##### xml模式:
```java
<verify id="verify" type="entity">
<entitys type="com.testflow.apitest.testentity.JsonsRootBean">
<entity>weather1</entity>
<entity>weather2</entity>
</entitys>
<pkkeys>
<pkkey>Heweather6:{status}</pkkey>
<pkkey>Daily_forecast:{cond_code_d, cond_code_n}</pkkey>
</pkkeys>
<nocomparekeys>
<nocomparekey>Daily_forecast:{wind_dir}</nocomparekey>
</nocomparekeys>
</verify>
```
## Documentation:
#### Getting Statted
#### 引入POM
```java
<dependency>
<groupId>com.github.qingquanlv</groupId>
<artifactId>testflow_api</artifactId>
<version>2.1.1</version>
</dependency>
```
#### 开放方法
##### Requset:
```java
/**
* 发送Json请求
* @param requestJsonStr : Json格式请求
* @param url : 请求url
* @param responce : 保存response的key
*
*/
public TestFlowManager sendRequest(String requestJsonStr, String url, String responce)
```
```java
/**
* 发送Cucumber格式请求
* @param requsetName : cucumber格式RequestName
* @param requestListMap : cucumber table.asMaps 格式request参数
* @param url : 请求url
* @param responce : 保存response的key
*
*/
public TestFlowManager sendRequest(String requestJsonStr, String url, String responce)
```
##### Paser:
```java
/**
* 使用反射方法模式Parse
* @param convertFileName : 反射类名
* @param convertMethodName : 反射方法名
* @param sourceParemKey : parse入参缓存Key
* @param sourceParamType : parse入参类型
* @param targetParemKey : parse返回值key
*
*/
public TestFlowManager reflectParse(String convertFileName, String convertMethodName, String sourceParemKey, String sourceParamType, String targetParemKey)
```
```java
/**
* 使用子类重写方法模式Parse
* @param sourceParemType : parse入参缓存Key
* @param sourceParemKey : parse入参类型
* @param targeParemtKey : parse返回值key
* @param dataParser : dataParser重新类
*
*/
public TestFlowManager overrideParse(String so
蓝精神
- 粉丝: 31
- 资源: 4720
最新资源
- 基于ThinkPHP的投资分析、真实模拟平台详细文档+全部资料+高分项目.zip
- 基于Vue2.x的记账单记录、账单分析系统详细文档+全部资料+高分项目.zip
- 基于vnpy,支持多账户,多策略,实盘交易,数据分析,分布式在线回测,风险管理,多交易节点的量化交易系统;支持CTP期货,股票,期权,数字货币等金融产品详细文档+全部资料+高分项目.zip
- 基于百度识别API的客流分析统计系统详细文档+全部资料+高分项目.zip
- 基于成交量的股票数据分析系统详细文档+全部资料+高分项目.zip
- 基于大学生课程成绩挖掘分析的就业预测系统详细文档+全部资料+高分项目.zip
- 基于多通道卷积神经网络的汽车评论情感分析系统详细文档+全部资料+高分项目.zip
- 基于混沌系统和DNA编码的彩色数字图像加密、解密、抗噪声性能分析以及抗裁剪性能分析详细文档+全部资料+高分项目.zip
- 基于时间指数的股票价值分析系统详细文档+全部资料+高分项目.zip
- 基于计算机视觉,路面分析,及交通路况识别的车辆辅助驾驶系统详细文档+全部资料+高分项目.zip
- 基于微博的网络舆情话题分析和用户画像系统详细文档+全部资料+高分项目.zip
- 基于知识库的问答系统、其中使用带注意力机制的对抗迁移学习做中文命名实体识别,使用BERT模型做句子相似度分析。详细文档+全部资料+高分项目.zip
- 四足机器狗模型3D图纸和工程图机械结构设计图纸和其它技术资料和技术方案非常好100%好用.zip
- 毕业设计-基于智慧景区之PC端(管理端)后台管理系统全部资料+高分项目+详细文档.zip
- 基于CS架构的武汉市智慧旅游系统iTravel全部资料+高分项目+详细文档.zip
- 基于PaddlePaddle的智慧课堂实时监测系统全部资料+高分项目+详细文档.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论0