R语言 Testlink excel 转XML 批量导入测试用例

Python017

R语言 Testlink excel 转XML 批量导入测试用例,第1张

Testlink作为一个开源的项目管理工具,功能是非常强大的。不得不说,在测试用例创建方面功能有些弱。

大家都习惯了在excel中写测试用例,当要导入到Testlink中时需要一个一个的创建。

这耗费了大量的时间,在网络不好的情况下还容易出现了延迟,降低了效率。

幸好Testlink提供了XML批量导入测试用例方式,但只支持XML格式,所以这就需要我们把excel转换成XML格式的文件

由于时间原因,只用到了用例编号 测试用例名字 前提条件 测试步骤 其他均用统一给定值,然后写死在XML中

由于XML生成时的编码问题,元素值中出现<会被替换成(<) >替换成(>) '被替换成(')

在Notepad++里查找替换下就行

如果导入时出现警告:xml_load_ko

可能是R语言默认的编码问题,和本地主机编码不匹配。

解决方法是:在本地创建一个文本,把XML文件内容复制进去,再把后缀名改成xml即可

R语言XML文件

XML是万维网上使用标准ASCII文本,内部网和其他地方共享文件格式和数据的文件格式。 它代表可扩展标记语言(XML)。 与HTML类似,它包含标记标签。但与标记标签描述页面结构的HTML不同,标记标签描述了文件中包含的数据的含义。

可以使用“XML”包读取R中的xml文件,使用以下命令安装此软件包。

install.packages("XML")

R

准备XML文件数据

通过将以下数据复制到文本编辑器(如记事本)中来创建XMl文件。 使用.xml扩展名保存文件,并将文件类型选为所有文件(*.*)。创建一个XML文件:input.xml,内容如下 -

<RECORDS>

<EMPLOYEE>

<ID>1</ID>

<NAME>Rick</NAME>

<SALARY>623.3</SALARY>

<STARTDATE>1/1/2012</STARTDATE>

<DEPT>IT</DEPT>

</EMPLOYEE>

<EMPLOYEE>

<ID>2</ID>

<NAME>Dan</NAME>

<SALARY>515.2</SALARY>

<STARTDATE>9/23/2013</STARTDATE>

<DEPT>Operations</DEPT>

</EMPLOYEE>

<EMPLOYEE>

<ID>3</ID>

<NAME>Michelle</NAME>

<SALARY>611</SALARY>

<STARTDATE>11/15/2014</STARTDATE>

<DEPT>IT</DEPT>

</EMPLOYEE>

<EMPLOYEE>

<ID>4</ID>

<NAME>Ryan</NAME>

<SALARY>729</SALARY>

<STARTDATE>5/11/2014</STARTDATE>

<DEPT>HR</DEPT>

</EMPLOYEE>

<EMPLOYEE>

<ID>5</ID>

<NAME>Gary</NAME>

<SALARY>843.25</SALARY>

<STARTDATE>3/27/2015</STARTDATE>

<DEPT>Finance</DEPT>

</EMPLOYEE>

<EMPLOYEE>

<ID>6</ID>

<NAME>Nina</NAME>

<SALARY>578</SALARY>

<STARTDATE>5/21/2013</STARTDATE>

<DEPT>IT</DEPT>

</EMPLOYEE>

<EMPLOYEE>

<ID>7</ID>

<NAME>Simon</NAME>

<SALARY>632.8</SALARY>

<STARTDATE>7/30/2013</STARTDATE>

<DEPT>Operations</DEPT>

</EMPLOYEE>

<EMPLOYEE>

<ID>8</ID>

<NAME>Guru</NAME>

<SALARY>722.5</SALARY>

<STARTDATE>6/17/2014</STARTDATE>

<DEPT>Finance</DEPT>

</EMPLOYEE>

</RECORDS>

XML

读取XML文件

R使用xmlParse()函数来读取xml文件,它作为列表存储在R中。

# Load the package required to read XML files.

library("XML")

# Also load the other required package.

library("methods")

# Give the input file name to the function.

result <- xmlParse(file = "input.xml")

# Print the result.

print(result)

R

当我们执行上述代码时,会产生以下结果 -

<?xml version="1.0"?>

<RECORDS>

<EMPLOYEE>

<ID>1</ID>

<NAME>Rick</NAME>

<SALARY>623.3</SALARY>

<STARTDATE>1/1/2012</STARTDATE>

<DEPT>IT</DEPT>

</EMPLOYEE>

<EMPLOYEE>

<ID>2</ID>

<NAME>Dan</NAME>

<SALARY>515.2</SALARY>

<STARTDATE>9/23/2013</STARTDATE>

<DEPT>Operations</DEPT>

</EMPLOYEE>

<EMPLOYEE>

<ID>3</ID>

<NAME>Michelle</NAME>

<SALARY>611</SALARY>

<STARTDATE>11/15/2014</STARTDATE>

<DEPT>IT</DEPT>

</EMPLOYEE>

<EMPLOYEE>

<ID>4</ID>

<NAME>Ryan</NAME>

<SALARY>729</SALARY>

<STARTDATE>5/11/2014</STARTDATE>

<DEPT>HR</DEPT>

</EMPLOYEE>

<EMPLOYEE>

<ID>5</ID>

<NAME>Gary</NAME>

<SALARY>843.25</SALARY>

<STARTDATE>3/27/2015</STARTDATE>

<DEPT>Finance</DEPT>

</EMPLOYEE>

<EMPLOYEE>

<ID>6</ID>

<NAME>Nina</NAME>

<SALARY>578</SALARY>

<STARTDATE>5/21/2013</STARTDATE>

<DEPT>IT</DEPT>

</EMPLOYEE>

<EMPLOYEE>

<ID>7</ID>

<NAME>Simon</NAME>

<SALARY>632.8</SALARY>

<STARTDATE>7/30/2013</STARTDATE>

<DEPT>Operations</DEPT>

</EMPLOYEE>

<EMPLOYEE>

<ID>8</ID>

<NAME>Guru</NAME>

<SALARY>722.5</SALARY>

<STARTDATE>6/17/2014</STARTDATE>

<DEPT>Finance</DEPT>

</EMPLOYEE>

</RECORDS>

Shell

获取XML文件中存在的节点数

# Load the packages required to read XML files.

library("XML")

library("methods")

# Give the input file name to the function.

result <- xmlParse(file = "input.xml")

# Exract the root node form the xml file.

rootnode <- xmlRoot(result)

# Find number of nodes in the root.

rootsize <- xmlSize(rootnode)

# Print the result.

print(rootsize)

R

当我们执行上述代码时,会产生以下结果 -

output

[1] 8

R

第一个节点的详细信息

下面来看看如何解析文件的第一条记录,它将给出对顶级节点中存在的各种元素的详细信息。

# Load the packages required to read XML files.

library("XML")

library("methods")

# Give the input file name to the function.

result <- xmlParse(file = "input.xml")

# Exract the root node form the xml file.

rootnode <- xmlRoot(result)

# Print the result.

print(rootnode[1])

R

当我们执行上述代码时,会产生以下结果 -

$EMPLOYEE

<EMPLOYEE>

<ID>1</ID>

<NAME>Rick</NAME>

<SALARY>623.3</SALARY>

<STARTDATE>1/1/2012</STARTDATE>

<DEPT>IT</DEPT>

</EMPLOYEE>

attr(,"class")

[1] "XMLInternalNodeList" "XMLNodeList"

Shell

获取节点的其它元素

# Load the packages required to read XML files.

library("XML")

library("methods")

# Give the input file name to the function.

result <- xmlParse(file = "input.xml")

# Exract the root node form the xml file.

rootnode <- xmlRoot(result)

# Get the first element of the first node.

print(rootnode[[1]][[1]])

# Get the fifth element of the first node.

print(rootnode[[1]][[5]])

# Get the second element of the third node.

print(rootnode[[3]][[2]])

R

当我们执行上述代码时,会产生以下结果 -

<ID>1</ID>

<DEPT>IT</DEPT>

<NAME>Michelle</NAME>

Shell

XML转到数据帧

为了在大文件中有效处理数据,我们以xml文件的形式读取数据作为数据帧。然后处理数据帧进行数据分析。

# Load the packages required to read XML files.

library("XML")

library("methods")

# Convert the input xml file to a data frame.

xmldataframe <- xmlToDataFrame("input.xml")

print(xmldataframe)

R

当我们执行上述代码时,会产生以下结果 -

ID NAME SALARY STARTDATE DEPT

1 1 Rick 623.3 1/1/2012 IT

2 2 Dan 515.2 9/23/2013 Operations

3 3 Michelle611 11/15/2014 IT

4 4 Ryan729 5/11/2014 HR

5 5 Gary 843.25 3/27/2015Finance

6 6 Nina578 5/21/2013 IT

7 7Simon 632.8 7/30/2013 Operations

8 8 Guru 722.5 6/17/2014Finance

Shell

由于数据现在已经转为数据帧,所以我们可以使用数据帧相关函数来读取和操作文件。

我觉得能用rodbc做这个事;同时,我也期待正确答案;

如果是我,我就用其他语言处理下,把这个xml处理成read.table能读的表格;

关联分析,可以线性回归,可以聚类....

弄上来几行给看看;