`
奎河少年
  • 浏览: 24806 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

myDataProvider

 
阅读更多
package data;

import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;
import org.testng.AssertJUnit;
import org.testng.annotations.DataProvider;
import com.bj58.qa.atf.data.BaseINIData;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
/**
 * 数据驱动类范例
 */
public class MyDataProvider extends BaseINIData{
	
	public static final String DeletePatten="*del*";
	
	//从文本文件中获得数据
	@DataProvider(name="json")
	public static Object[][] jsonData(Method m)
	{ 
		
	//	System.out.println(getDataFileName(m)+" "+m.getName());
		Object[][] dataBlock =new BaseINIData().readBlockFromDataFile(getDataFileName(m),m.getName(), true);		
	
		if(dataBlock==null){
			return null;
		}
		String jsonString = (String)dataBlock[0][0];
		JSONObject jsonObject=null;
		JSONArray jsonArray=null;
		try {
			//System.out.println(jsonString);
			jsonObject = new JSONObject(jsonString);
		} catch (JSONException e) {
		//	e.printStackTrace();
			try {
				jsonArray = new JSONArray(jsonString);
			} catch (JSONException e1) {
				e1.printStackTrace();
				AssertJUnit.fail("传入数据错误!"+jsonString);
			}
		}
		//传入一组数据
		if(jsonObject!=null){
			Object[][] result = new Object[1][1];
			
			String[] fields=JSONObject.getNames(jsonObject);
			
			Map<String,String>paramMap= new HashMap<String,String>();
			
			
			for(String field:fields){
				String value="";
				try {
					value=jsonObject.getString(field);
				} catch (JSONException e) {
					e.printStackTrace();
					AssertJUnit.fail("传入数据错误!"+field);
				}
				paramMap.put(field, value);
			}
			
			result[0][0]=paramMap;
			
			return result;
		}
		
		//传入多组数据
		if(jsonArray!=null){
			
			int length= jsonArray.length();
			Object[][] result = new Object[length][1];
			Map<String,String> paramMap= new HashMap<String,String>();
			for(int i=0;i<length;i++){
				JSONObject jo=null;
				Map<String,String> tempParamMap= copyMap(paramMap);
				
				
				try {
					jo = (JSONObject) jsonArray.get(i);
				} catch (JSONException e) {
					e.printStackTrace();
					AssertJUnit.fail("传入数据错误!"+jsonArray.toString());
				}
				String[] fields=JSONObject.getNames(jo);
				for(String field:fields){
					String value="";
					try {
						value=jo.getString(field);
					} catch (JSONException e) {
						e.printStackTrace();
						AssertJUnit.fail("传入数据错误!"+field);
					}
					if(DeletePatten.equals(value)){
						tempParamMap.remove(field);
					}else{
						tempParamMap.put(field, value);
					}
				}
				
				result[i][0]=tempParamMap;
				
				
				paramMap = copyMap(tempParamMap);
				
			}
			
			return result;
			
		}
		return new Object[1][1];
		
	}
	
	private static String getDataFileName(Method m){
		
		String className = m.getDeclaringClass().getName();
		
		int lastDotPosition = className.lastIndexOf('.');
		
		
		className = className.substring(lastDotPosition+1);
		String fileName = className.replace("Test", "Data");
		
		fileName+=".json";
		
		return fileName;
		
	}
	private static Map<String,String> copyMap(Map<String,String> sourceMap){
		Map<String,String> tempMap = new HashMap<String,String>();
		for(String key:sourceMap.keySet()){
			
			tempMap.put(key, sourceMap.get(key));
		}
		return tempMap;
		
	}
	
}

 

 

分享到:
评论

相关推荐

    Flex创建可编辑以及分页的DataGrid

    myDataProvider.pageCount = totalPageCount; myDataProvider.pageSize = itemsPerPage; ``` 3. **加载外部库的jar文件** 在WEB-INF/lib目录下的jar文件需要在Flex应用中进行加载。这通常在Flex项目的Build ...

    flex tree的简单使用

    &lt;Tree id="myTree" dataProvider="{myDataProvider}" itemClick="handleItemClick(event)" /&gt; ``` 在ActionScript中,可以这样创建: ```actionscript var myTree:Tree = new Tree(); myTree.dataProvider = ...

    改变flex DataGrid单元格字体颜色

    &lt;mx:DataGrid id="myDataGrid" dataProvider="{myDataProvider}"&gt; 列1" dataField="field1" itemRenderer="com.mycompany.CustomCellRenderer"/&gt; &lt;!-- 更多列配置... --&gt; ``` 3. 数据提供程序 确保你的数据...

    flex iFrame的tree控件连接到相应的网页

    &lt;mx:Tree id="tree" dataProvider="{myDataProvider}" click="onTreeClick(event)"/&gt; ``` 2. 创建iFrame组件:然后,添加一个IFrame组件到界面中,并设置初始源为空或者默认网页。 ```xml ``` 3. 监听Tree点击...

    FLEX带复选框LIST

    这里的`myDataProvider`是一个ArrayCollection或其他数据提供者,其中包含了列表项的数据。 接下来,我们讨论标签"FLEX 带复选框LIST"。这个标签表明了此示例专注于Flex框架,特别是涉及列表和复选框功能的使用。在...

    flex 合并单元格

    &lt;mx:AdvancedDataGrid id="myGrid" dataProvider="{myDataProvider}"&gt; ``` 4. **设置合并属性** 要启用单元格合并,我们需要在AdvancedDataGrid的列定义中设置`header间隙`(headerGap)和`row间隙`(rowGap)为0...

    Flex内联itemRenderer

    &lt;mx:List dataProvider="{myDataProvider}"&gt; ``` 在这个例子中,我们定义了一个内联的`IconItemRenderer`,它不仅显示了数据的文本(`&lt;s:Label&gt;`),还通过`iconFunction`展示了对应的图标。`...

    ActionScript_ItemRenderer

    list.dataProvider = myDataProvider; list.itemRenderer = MyItemRenderer2; ``` 在描述中提到的“效果一样”可能意味着`MyItemRenderer2`实现了与前一个示例类似的功能,但具体实现细节未给出。通常,这可能涉及...

    AdvancedDataGrid 动态添加节点 控制树

    myDataProvider.addItem(newData); ``` 3. **通知AdvancedDataGrid**:数据提供者添加了新数据后,需要通知AdvancedDataGrid进行更新。这可以通过调用`refresh()`方法完成。 ```actionscript myDataGrid.data...

    Flex DataGrid 插入子组件

    &lt;mx:DataGrid dataProvider="{myDataProvider}"&gt; 操作" itemRenderer="com.mycompany.ButtonRenderer"/&gt; &lt;!-- 其他列配置 --&gt; ``` 五、事件处理和通信 插入子组件后,我们还需要处理这些组件的事件。例如,...

    flex itemRenderer深入学习--flex相册例子

    &lt;List id="albumList" dataProvider="{myDataProvider}"&gt; ``` 在这里,`local:AlbumItemRenderer`是我们的自定义ItemRenderer类。 此外,我们还需要处理数据绑定和事件响应。数据绑定允许我们在...

    android项目成为lib库

    例如,如果Library有一个数据类`MyData`,可以创建一个`MyDataProvider`接口,让Library实现这个接口,然后在主项目中通过接口访问数据。 2. 布局:Library中的布局可以直接在主项目中使用。在主项目的布局XML文件...

    flex DataGrid 表头分组

    &lt;mx:AdvancedDataGrid dataProvider="{myDataProvider}"&gt; ``` 在上述代码中,我们设置了`category`字段作为分组依据,创建了一个名为“Category”的表头分组。 4. **自定义表头分组行为**:...

    flex4做的itemrenderer呈现器

    &lt;s:List dataProvider="{myDataProvider}"&gt; ``` 7. **优化和性能**: 为了提高性能,ItemRenderer应尽可能轻量级。避免在ItemRenderer中包含复杂的布局或过多的计算,因为它们会影响列表滚动的平滑...

    react-admin:使用react-admin的待办事项列表

    &lt;Admin dataProvider={myDataProvider}&gt; ); ``` 其中`todoList`是待办事项列表组件。 4. **创建列表组件**:`TodoList`组件将渲染待办事项列表。这里,你可以定义字段显示、排序、过滤等选项。例如: ```...

Global site tag (gtag.js) - Google Analytics