Fhaohaizi的博客

核弹派测试人员

接口批量上传文件的实例

本人在做接口测试中,遇到一个活儿,将一批图片上传到服务器,12000+,在一个文件夹中不同的文件夹里面,由于上传文件过多,只能写脚本批量上传。也算是自动化的一部分吧,经过测试和改良,终于完成,期间由于种种原因失败60+次,做了第二次上传,分享代码,供大家参考。

思路是先把文件的绝对地址拿出来,第一想核对一下文件数量,第二为了确定文件上传顺序,方便断点续传。

下面是获取文件路径的方法:

List<String> list = new ArrayList<>();
		int aaa = 0;
		File file = new File("/Users/Vicky/Desktop/aaa");
		output(file.getAbsolutePath());
		File[] files = file.listFiles();
		int length = files.length;
		for (int i = 0; i < length; i++) {
			if (files[i].isDirectory()) {
				File[] file1 = files[i].listFiles();
				output(file1.length);
				output(file1[0].getAbsolutePath());
				for (int j = 0; j < file1.length; j++) {
					String name = file1[j].getAbsolutePath();
//					output(name);
					if (!name.contains("DS_Store")) {
						list.add(name);
						aaa++;
					}
				}
//			aaa++;
			}
//		output(files.length);
		}
		output(aaa, list.size());
		Concurrent.saveRequestTimes(list);

下面是保存路径文件的方法:

public static void saveRequestTimes(List<String> data) {
		StringBuffer buffer = new StringBuffer();
		int length = data.size();
		for (int i = 0; i < length; i++) {
			if (i == 0) {
				buffer.append(data.get(0));
				continue;
			}
			buffer.append(LINE + data.get(i));
		}
		logLong(buffer.toString());
	}

下面是执行请求的方法:

Admin admin = new Admin();
		List<String> list = readTxtFileByLine("/Users/Vicky/Documents/workspace/fission/log/test.log");
		List<Integer> list1 = new ArrayList<>();
		int size = list.size();
		output(size);
		try {
			for (int i = 0; i < size; i++) {
				String pic = list.get(i);
				admin.update(pic);
				list1.add(i);
				output(i + pic);
			}
		} catch (Exception e) {
			output("", e);
//		} finally {
//			logLog(list1.toString());
		}
//		admin.update();
		testOver();

其中updata方法就不写了,只是一个普通的上传文件的post请求而已。

其中读取文件并返回list集合的方法如下:

/**
	 * 分行读取txt文档,默认使用utf-8编码格式
	 *
	 * @param filePath 文件路径
	 * @return 返回list数组
	 */
	public static List<String> readTxtFileByLine(String filePath) {
		List<String> lines = new ArrayList<>();
		try {
			String encoding = "utf-8";
			File file = new File(filePath);
			if (file.isFile() && file.exists()) { // 判断文件是否存在
				FileInputStream fileInputStream = new FileInputStream(file);
				InputStreamReader read = new InputStreamReader(fileInputStream, encoding);// 考虑到编码格式
				BufferedReader bufferedReader = new BufferedReader(read);
				String line = null;
				while ((line = bufferedReader.readLine()) != null) {
					lines.add(line);
				}
				bufferedReader.close();
				read.close();
				fileInputStream.close();
			} else {
				output("找不到指定的文件");
			}
		} catch (Exception e) {
			output("读取文件内容出错");
			e.printStackTrace();
		}
		return lines;
	}

记录上传失败时的方法在output方法中已经写好了,是记录日志的方法,这里就不写了,在统计失败数据的时候可以用请求响应大小来区分失败和成功,以及失败类型,这都是框架的基本功能,这里先不写了,毕竟内容比较多。有兴趣的可以加群交流。

宣传一下自己的QQ群:群号:340964272


阅读更多
上一篇java和python程序使用文件通信时,不同系统分行符导致打印文件内容不全的原因分析
下一篇groovy如何使用java接口测试框架发送http请求
想对作者说点什么? 我来说一句

批量上传文件带进度条

2013年03月20日 1.27MB 下载

Java 批量上传文件实例

2010年01月31日 181KB 下载

Struts批量上传文件实例word

2011年07月27日 46KB 下载

asp.net批量上传文件实例.rar

2012年02月21日 322KB 下载

uploadify批量上传实例

2012年01月14日 319KB 下载

Asp.net多文件上传

2010年03月25日 31KB 下载

批量上传文件

2018年04月18日 6.94MB 下载

ajax批量上传图片

2014年11月14日 21KB 下载

没有更多推荐了,返回首页

关闭
关闭