一、读写Excel
<!-- 对office软件读写功能 -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.17</version>
</dependency>
package com.lemon.json;
import org.apache.poi.EncryptedDocumentException;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.*;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class POIDemo {
/*
* 读:
* 1、打开Excel
* 2、选择sheet
* 3、读取行
* 4、读取列
* 5、修改内容
* 6、回写Excel
* */
public static void main(String[] args) throws IOException, InvalidFormatException {
FileInputStream fis = new FileInputStream("src/test/resources/测试用例.xls");
// Factory 创建xx类的。workbook等于整个Excel
Workbook workbook = WorkbookFactory.create(fis);
// 获取第一个sheet页
Sheet sheet = workbook.getSheetAt(0);
// 获取最后一行。使用普通for和增强for循环
int lastRowNum = sheet.getLastRowNum();
for (int i = 0; i <= lastRowNum; i++) {
// 获取行
Row row = sheet.getRow(i);
short lastCellNum = row.getLastCellNum();
for (int j = 0; j < lastCellNum; j++) {
// 获取单元格
Cell cell = row.getCell(j, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK);
// 将单元格数据转为String类型
cell.setCellType(CellType.STRING);
// 修改单元格
// cell.setCellValue("3000");
// 回写
// FileOutputStream fos = new FileOutputStream("src/test/resources/测试用例2.xls");
// workbook.write(fos);
//获取单元格数据
String value = cell.getStringCellValue();
System.out.print(value + " ");
}
System.out.println();
}
//关流
fis.close();
}
}
项目 模块 用例id 用例描述 请求url 请求方式 请求数据 预期结果 返回报文 测试结果 测试人员
白羊座 登录 login_1 正常登录 http://api.nnzhp.cn/api/user/login POST username=niuhanyang&passwd=aA123456 error_code=0
白羊座 登录 login_2 不传账号 http://api.nnzhp.cn/api/user/login POST passwd=123456 error_code=3001
白羊座 登录 login_3 不传密码 http://api.nnzhp.cn/api/user/login POST username=niuhanyang error_code=3008
二、读写xml
<dependency>
<groupId>org.dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>2.0.0</version>
</dependency>
package com.lemon.json;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
/*
* DOM4J类
DOM4J定义了几个Java类。以下是最常见的类:
Document - 表示整个XML文档。文档Document对象是通常被称为DOM树。
Element - 表示一个XML元素。 Element对象有方法来操作其子元素,它的文本,属性和名称空间。
Attribute - 表示元素的属性。属性有方法来获取和设置属性的值。它有父节点和属性类型。
Node - 代表元素,属性或处理指令
常见DOM4J的方法
当使用DOM4J,还有经常用到的几种方法:
SAXReader.read(xmlSource)() - 构建XML源的DOM4J文档。
Document.getRootElement() - 得到的XML的根元素。
Element.node(index) - 获得在元素特定索引XML节点。
Element.attributes() - 获取一个元素的所有属性。
Node.valueOf(@Name) - 得到元件的给定名称的属性的值。
*
* */
public class ParseXmlDemo {
public void readXML() throws Exception {
// 创建saxReader对象
SAXReader reader = new SAXReader();
// 通过read方法读取一个文件 转换成Document对象
Document document = reader.read(new File("src/test1.xml"));
// 获取根节点元素对象
Element node = document.getRootElement();
// 遍历所有的元素节点
listNodes(node);
elementMethod(node);
}
public void createXML() throws Exception {
Document document = DocumentHelper.createDocument();
Element root = document.addElement("cars");
Element supercarElement = root.addElement("supercars").addAttribute("company", "Ferrai");
supercarElement.addElement("carname").addAttribute("type", "FerrariAttr").addText("FerrariText");
supercarElement.addElement("carname").addAttribute("type", "sportsAttr").addText("sportsText");
// 写入到一个新的文件中
writer(document);
}
/**
* 把document对象写入新的文件
*
* @param document
* @throws Exception
*/
public void writer(Document document) throws Exception {
// 紧凑的格式
// OutputFormat format = OutputFormat.createCompactFormat();
// 排版缩进的格式
OutputFormat format = OutputFormat.createPrettyPrint();
// 设置编码
format.setEncoding("UTF-8");
// 创建XMLWriter对象,指定了写出文件及编码格式
// XMLWriter writer = new XMLWriter(new FileWriter(new
// File("src//a.xml")),format);
XMLWriter writer = new XMLWriter(
new OutputStreamWriter(new FileOutputStream(new File("src//test1.xml")), "UTF-8"), format);
// 写入
writer.write(document);
// 立即写入
writer.flush();
// 关闭操作
writer.close();
}
/**
* 遍历当前节点元素下面的所有(元素的)子节点
*
* @param node
*/
public void listNodes(Element node) {
System.out.println("当前节点的名称::" + node.getName());
// 获取当前节点的所有属性节点
List<Attribute> list = node.attributes();
// 遍历属性节点
for (Attribute attr : list) {
System.out.println(attr.getText() + "-----" + attr.getName() + "---" + attr.getValue());
}
if (!(node.getTextTrim().equals(""))) {
System.out.println("文本内容::::" + node.getText());
}
// 当前节点下面子节点迭代器
Iterator<Element> it = node.elementIterator();
// 遍历
while (it.hasNext()) {
// 获取某个子节点对象
Element e = it.next();
// 对子节点进行遍历
listNodes(e);
}
}
/**
* @param node
*/
public void elementMethod(Element node) {
// 获取node节点中,子节点的元素名称为supercars的元素节点。
Element e = node.element("supercars");
// 获取supercars元素节点中,子节点为carname的元素节点(可以看到只能获取第一个carname元素节点)
Element carname = e.element("carname");
System.out.println(e.getName() + "----" + carname.getText());
// 获取supercars这个元素节点 中,所有子节点名称为carname元素的节点 。
List<Element> carnames = e.elements("carname");
for (Element cname : carnames) {
System.out.println(cname.getText());
}
// 获取supercars这个元素节点 所有元素的子节点。
List<Element> elements = e.elements();
for (Element el : elements) {
System.out.println(el.getText());
}
}
}