数据驱动之Unittest+ DDT +XML
2019-01-01 本文已影响0人
davieyang
前一个章节我们将测试数据存储在了MySQL里,实现了测试数据和测试代码的分离,并将操作数据库的方法封装,使其与SQL语句和测试代码分离,实现松耦合,大大提高了代码的可读性和可维护性。本小节我们将换另一个介质,将测试数据存储在XML文件中
一、创建存储测试数据的XML
在工程中创建一个TestData.xml文件,并写入如下代码
![](https://img.haomeiwen.com/i15623412/3ef5c8c7a74678db.png)
二、封装解析XML文件模块
![](https://img.haomeiwen.com/i15623412/f5fabe1b876781b5.png)
代码解析:
定义了ParseXML类,该类所接受的参数是XML文件;封装了getRoot方法,用于获取XML文件的根节点对象,并返回给调用者;封装了findNodeByName方法,用于根据节点名称获取节点对象;封装了getNodeofChildText方法,用于获取节点下的所有子节点内容并组成字典;封装了getDataFromXml方法用于获取测试数据。
三、测试代码
如下代码为测试代码,其中借由DDT将XML作为测试数据的数据源、解包、再应用于测试方法中,因为我们在XML里准备了3组测试数据,借助DDT,那么如下测试代码会执行3次,在工程中创建DataDrivenByXML.py,并写入如下代码:
![](https://img.haomeiwen.com/i15623412/0678c8beacd2a86d.png)
![](https://img.haomeiwen.com/i15623412/3febdf8231be95a0.png)
代码解析:
代码头部导入ddt模块(import ddt),实例化了我们前面封装好的ParseXML类,并调用了他的getDataFromXml方法获取XML中的测试数据,然后测试类DataDrivenTestByXML前声明使用ddt(@ddt.ddt,测试方法test_dataDrivenByXML前使用@ddt.data()来获取数据并传给测试方法。