《自拍教程63》Python Testlink用例导入工具excel2xml

案例故事: Testlink是我们常用的用例管理工具,很多公司其实都在用,
Testlink 支持制定测试计划,支持多人在线同时管理维护/执行测试用例,自动生成测试报告等。
我个人也非常非常不推荐Excel线下管理测试用例,
但是官方提供的Testlink版本,是不支持Excel导入的,只能进行Xml导入。

没这个Excel导入功能,确实有点可惜了,
但是秉着Python是万能的,只是将Excel转Xml本也不是什么难事。


准备阶段
  1. 操作Excel的模块,一直首选openpyxl, 直接pip install openpyxl即可
  2. 操作Xml的模块,我建议首选ElementTree, 但是需要修改其源代码,原因如下3,4步。
  3. 根据Testlink官方提供的文档,如果单独一条用例,其xml如下,看着晕乎,别怂,就是干!
<?xml version='1.0' encoding='utf-8'?>
<testcases>
    <testcase internalid="1" name="VTS测试——arm64-v8a VtsFastbootVerification">
        <externalid />
        <version>
            <![CDATA[1]]>
        </version>
        <summary>
            <![CDATA[VTS测试——arm64-v8a VtsFastbootVerification]]>
        </summary>
        <preconditions>
            <![CDATA[Android设备已经通过USB连接上Ubuntu系统]]>
        </preconditions>
        <execution_type>
            <![CDATA[2]]>
        </execution_type>
        <importance>
            <![CDATA[1]]>
        </importance>
		<status>
            <![CDATA[7]]>
        </status>
        <steps>
            <step>
                <step_number>
                    <![CDATA[1]]>
                </step_number>
                <actions>
                    <![CDATA[Step1:  运行vts-tradefed进入vts控制台]]>
                </actions>
                <expectedresults>
                    <![CDATA[Result1: 成功进入vts控制台]]>
                </expectedresults>
                <execution_type>
                    <![CDATA[2]]>
                </execution_type>
            </step>
            <step>
                <step_number>
                    <![CDATA[2]]>
                </step_number>
                <actions>
                    <![CDATA[Step2:  执行run vts -m VtsFastbootVerification]]>
                </actions>
                <expectedresults>
                    <![CDATA[Result2: 运行结果Pass,vts测试通过]]>
                </expectedresults>
                <execution_type>
                    <![CDATA[2]]>
                </execution_type>
            </step>
        </steps>
        <keywords>
            <keyword name="Android 9">
                <notes>
                    <![CDATA[]]>
                </notes>
            </keyword>
        </keywords>
    </testcase>
</testcases>

4.由以上Xml可以看到,有一个很奇怪的![CDATA[**]],
被<![CDATA[]]>这个标记所包含的内容将表示为纯文本,不应被XML解析器进行解析,
但是这种<![CDATA[]]>这个标记,Python自带的ElementTree无法正常生成,
于是我多番研究后,修改了ElementTree的源代码,增加了901,902行,

可以到本素材案例处下载就是etree这个文件夹,
本案例import的etree可以理解成第三方的模块,非官方的ElementTree模块。
5. 我们需要设定测试用例Excel模板如下:

6. 我们本次需要考虑实现批量转换多个Excel, 输入是Excel_Input,
运行excel2xml.py后输出是XML_Output, 其文件目录如下:


Python面向对象类形式

由于本案例涉及的代码有些许难度,且相对较长,
直接以面向对象类的形式来进行建模及程序设计。

建模:先设想有这么一个空白的世界,这个世界需要哪些类型的事物(名词)。
我们需要两个类,一个是ExcelReader类用于读取Excel获取Cases数据,
一个是XMLWriter类,用于将以上获取的Excel数据写入Xml文件里去。

# coding=utf-8

import os
import re
import shutil
from openpyxl import load_workbook
from etree.ElementTree import ElementTree, Element, SubElement

SUMMARY_COL = 1  # 用例标题
PRECONDITION_COL = 2  # 预置条件
EXECUTETYPE_COL = 3  # 用例的执行方式,手动和自动两种
IMPORTANCE_COL = 4  # 用例的优先级
STEPS_COL = 5  # 用例的执行步骤
EXCEPTED_RESULT_COL = 6  # 用例的预期结果
KEYWORD_COL 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值