「All right reserved, any unauthorized reproduction or transfer is prohibitted」
本人在做接口测试中,遇到一个活儿,将一批图片上传到服务器,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);
下面是保存路径文件的方法:
/**
* 获取文件夹下所有文件的绝对路径的方法
*
* @param path
* @return
*/
public static List<String> getAllFile(String path) {
List<String> list = new ArrayList<>();
File file = new File(path);
File[] files = file.listFiles();
int length = files.length;
for (int i = 0; i < length; i++) {
File file1 = files[i];
if (file1.isDirectory()) {
List<String> allFile = getAllFile(file1.getAbsolutePath());
list.addAll(allFile);
continue;
}
String path1 = file1.getAbsolutePath();
if (path1.contains("/.")) continue;
list.add(path1);
}
return list;
}
下面是执行请求的方法:
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 方法中已经写好了,是记录日志的方法,这里就不写了,在统计失败数据的时候可以用请求响应大小来区分失败和成功,以及失败类型,这都是框架的基本功能,这里先不写了,毕竟内容比较多。有兴趣的可以加群交流。
技术类文章精选
- java 一行代码打印心形
- Linux 性能监控软件 netdata 中文汉化版
- 接口测试代码覆盖率(jacoco)方案分享
- 性能测试框架
- 如何在 Linux 命令行界面愉快进行性能测试
- 图解 HTTP 脑图
- 如何测试概率型业务接口
- httpclient 处理多用户同时在线
- 将 swagger 文档自动变成测试代码
- 五行代码构建静态博客
- httpclient 如何处理 302 重定向
- 基于 java 的直线型接口测试框架初探
- Tcloud 云测平台 -- 集大成者
- 如何测试概率型业务接口
- python plotly 处理接口性能测试数据方法封装
- 单点登录性能测试方案
非技术文章精选
- 为什么选择软件测试作为职业道路?
- 成为杰出 Java 开发人员的 10 个步骤
- 写给所有人的编程思维
- 自动化测试的障碍
- 自动化测试的问题所在
- 测试之《代码不朽》脑图
- 成为优秀自动化测试工程师的 7 个步骤
- 优秀软件开发人员的态度
- 如何正确执行功能 API 测试
- 未来 10 年软件测试的新趋势 - 上
- 未来 10 年软件测试的新趋势 - 上
- 自动化测试解决了什么问题
- 17 种软件测试人员常用的高效技能 - 上
- 17 种软件测试人员常用的高效技能 - 下
- 手动测试存在的重要原因
大咖风采
TesterHome 为用户提供「保留所有权利,禁止转载」的选项。
除非获得原作者的单独授权,任何第三方不得转载标注了「All right reserved, any unauthorized reproduction or transfer is prohibitted」的内容,否则均视为侵权。
具体请参见TesterHome 知识产权保护协议。
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
No Reply at the moment.