"Robot Framework入门笔记”系列之四 -
![](https://img.haomeiwen.com/i3310600/8decd37963ee0b40.png)
声明:大家好,欢迎阅读我写的关于Robot Framework的文章。这里面有几个实例供大家学习和交流。我把每一步都配上了截图,而且争取把截图做的很清楚。不过截图中的文字或代码有时候实在会很小,有些朋友可能看不清楚,没关系,文章主要是介绍思路。文章的源代码可以在百度网盘上下载:
http://pan.baidu.com/s/1hrGsQ7y
Robot Framework练习源代码 ->第1个测试用例改进2:创建数据集与数据访问
正文:
虽然已经把函数写好,但现在我们还是只有一组用户名和密码。测试需要多组数据,需要一个数据集,那应该把数据写到哪儿呢?对,没错,万能的Excel。我新建了一个叫TCLOG-1.xls的文件,把tab起名为“login”,创建了两列,一列叫UserName,另一列叫Password,然后从第二行开始输入数据。一个简单的数据集就创建好了。
![](https://img.haomeiwen.com/i3310600/31476370e6015c05.png)
然后把文件放到项目目录下。以我为例,我在项目根目录下创建了个叫Test_Data和Login的文件夹,把文件放进去。路径就是:C:/RF/Test_Data/Login/TCLOG-1.xls。
由于Robot Framework没有提供语句用来从Excel中读取数据,我们就得麻烦一点,自己动手写个小函数。我已经写好了一个,大家可以直接拿去用:
![](https://img.haomeiwen.com/i3310600/ce45a31258d0838e.png)
这段小程序里有三个方法,分别是read_csv_file,read_xls_file,xls_to_csv。前两个分别用于读格式为.csv和.xls的Excel文件,最后一个是从.xls转换成.csv。用蓝色标识的方法名称会自动被Robot Framework识别成为新的语句,而且新的语句会忽略下划线,所以三个语句分别为“Read Csv File”,“Read Xls File”,“Xls to Csv”。显然,咱们的例子需要使用第二种。通过程序可知Read Xls File接收filename和worksheet两个参数。前者代表文件名,后者是tab名。返回值是xls_data,代表数据集。把这个文件放在项目的根目录下,和刚才一样,我也是创建了一个Lib文件夹把它放里边,然后在MyFirstTestCase中点击Library加载,如图4-3:
![](https://img.haomeiwen.com/i3310600/493faa5f39be8f7a.png)
回到TCLOG-1中修改如下:
![](https://img.haomeiwen.com/i3310600/c5c63f0b3569dc67.png)
文件名参数位置写的是文件的绝对路径。tab里写的是login。需要注意的是,“$”在Python中代表字段或变量,而“@”则代表数组。有人可能问为什么返回值是数组呢?首先,返回值是一个数据的集合,数组是表示集合的一种方法。其次,数据在@{data}里是这样存的:@{data} = {第一行数据,第二行数据,第三行数据},当然咱们这个例子最简单,只有一行,@{data} = {第一行数据}。而每一行数据也是一个数组:@一行数据= {UserName,Password}。所以整个数据集是用一个二维数组来存的。有些人可能理解起来有点困难,不要着急。看完咱们的例子就懂了。
我把程序改成了这个样子:
![](https://img.haomeiwen.com/i3310600/441cef10f7a71749.png)
因为Excel文件里有很多行数据,我用了一个For的循环语句来一行一行读。程序会一行一行读取数据,直到最后一行为止。每次读出来一行数据就赋给${row}这个变量,所以每次$row都在不断更新。因为TCLOG-1.xls里只有一行,所以读完一行程序就停了,刚才说了,@一行数据= {UserName,Password},所以这里${row}也被看作是一个数组,此时里边就两个值,{“xcs@126.com”, “password”}。访问数组值的方式是${row[“UserName”]}和${row[“Password”]},所以图4-5第三行的意思就是把”xcs@126.com”和”password”作为参数值传到函数中去。
跑case,测试通过。