"Robot Framework入门笔记”系列之四 -

作者: 马可吃菠萝 | 来源:发表于2017-01-10 12:42 被阅读1175次

声明:大家好,欢迎阅读我写的关于Robot Framework的文章。这里面有几个实例供大家学习和交流。我把每一步都配上了截图,而且争取把截图做的很清楚。不过截图中的文字或代码有时候实在会很小,有些朋友可能看不清楚,没关系,文章主要是介绍思路。文章的源代码可以在百度网盘上下载:

http://pan.baidu.com/s/1hrGsQ7y

Robot Framework练习源代码 ->第1个测试用例改进2:创建数据集与数据访问

正文:

虽然已经把函数写好,但现在我们还是只有一组用户名和密码。测试需要多组数据,需要一个数据集,那应该把数据写到哪儿呢?对,没错,万能的Excel。我新建了一个叫TCLOG-1.xls的文件,把tab起名为“login”,创建了两列,一列叫UserName,另一列叫Password,然后从第二行开始输入数据。一个简单的数据集就创建好了。

图4-1

然后把文件放到项目目录下。以我为例,我在项目根目录下创建了个叫Test_Data和Login的文件夹,把文件放进去。路径就是:C:/RF/Test_Data/Login/TCLOG-1.xls。

由于Robot Framework没有提供语句用来从Excel中读取数据,我们就得麻烦一点,自己动手写个小函数。我已经写好了一个,大家可以直接拿去用:

图4-2

这段小程序里有三个方法,分别是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:

图4-3

回到TCLOG-1中修改如下:

图4-4

文件名参数位置写的是文件的绝对路径。tab里写的是login。需要注意的是,“$”在Python中代表字段或变量,而“@”则代表数组。有人可能问为什么返回值是数组呢?首先,返回值是一个数据的集合,数组是表示集合的一种方法。其次,数据在@{data}里是这样存的:@{data} = {第一行数据,第二行数据,第三行数据},当然咱们这个例子最简单,只有一行,@{data} = {第一行数据}。而每一行数据也是一个数组:@一行数据= {UserName,Password}。所以整个数据集是用一个二维数组来存的。有些人可能理解起来有点困难,不要着急。看完咱们的例子就懂了。

我把程序改成了这个样子:

图4-5

因为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,测试通过。

相关文章

网友评论

  • 秋夜_8533:读文件报错,提示找不到tmp.csv的文件,是py文件需要根据自己的文件后缀修改么
  • 68c9a843f131:我也是放在site-packages目录下就可以了,不然library飘红
  • code_debug:Resolving variable '${row['username']}' failed: AttributeError: DictReader instance has no attribute '__getitem__'
    读取字典的时候报错,有遇到过的朋友帮忙看看哇
  • 周水心:自定义库放置在了自建的用例根目录下放,添加library无法被识别,标红了的,然后尝试添加到了site-packages目录下放也无法被识别,自定义的包应该放在那个目录下才能被识别的呢?
    吧嗒吧嗒哒哒哒:@马可吃菠萝 dos下pip install xlrd
    马可吃菠萝:@会脸红的兔子君 如果你可以用我那个DataDriven.py的话,那把你自己写的放在Lib下就可以。注意要导入比如csv, xlrd, os之类的东西:
    import csv
    import xlrd
    import os
  • haha21:请教一下,为什么我自己写的函数不能被识别成Robot Framework识别成为关键词,导入您的文件中的函数可以呢,我在您的文件中重新一个函数也一样不能被识别
    马可吃菠萝:@haha21
    比如:
    import csv
    import xlrd
    import os
    马可吃菠萝:@haha21 你好。你指的是DataDriven文件吗?你需要导入csv, xlrd以及os这三个东西。
  • 前世今生_4fce:文件名参数位置写的不能是文件的相对路径吗
  • 前世今生_4fce: 这个自定义的数据集库,每一句可以有更详细的备注吗,看不太懂:cold_sweat: :pray: ,我想照着写read xlsx file
  • 王小二u:你好请问下读.xls要转换成.csv格式呢
    马可吃菠萝:我在那个datadriven文件里写了两个方法 第一个叫“read xls file" 还一个叫 "read csv file" 你在那个关键字位置按ctrl+空格 就会同时显示这两个 最后别忘了把需要使用的文件改成.csv的:blush:
  • 王小二u:你好请问下Import Library 中name/path分别代表的是什么?这两种导入是什么区别Selenium2Library和Lib/DataDriven.py
    马可吃菠萝:name/path就代表着你倒入的是什么东西。比如它是个library(类库)还是资源文件(包)?还有它的路径是什么。咱们手写程序的时候也会在文件的最顶端写import...道理其实是一样的
  • 歆_a522:你好,我把你网盘上的DataDriven.py的文件下下来放在我的在建项目根目录下面,但是添加library的时候失败什么情况呢?
    吧嗒吧嗒哒哒哒:请问是怎么解决的?我放在项目目录下和site-packages路径下通过library加载都失败
    歆_a522:@马可吃菠萝 已经解决了哈:smile:
    马可吃菠萝:不好意思 这一阵很忙 没查看留言。你是点击library按钮添加的吗?不要点resource按钮添加
  • 空空_8ec9:添加自定义库Datalibrary失败什么情况??
    空空_8ec9:@马可吃菠萝已经解决了,路径的问题,放在site-packages目录下就可以了
    马可吃菠萝:如果还有问题就加我微信 一起商量解决
    马可吃菠萝:@空空_8ec9 你好 你是添加点击library按钮还是resources按钮添加的?还有 自定义库是放在工程目录下么?

本文标题:"Robot Framework入门笔记”系列之四 -

本文链接:https://www.haomeiwen.com/subject/eqpkbttx.html