Ⅰ.18.1 如何存储和定位共享脚本和共享数据
来源:互联网 发布:淘宝震动棒买家秀图片 编辑:程序博客网 时间:2024/05/16 09:47
每个测试案例包含一个默认的测试脚本文件test.py(Python)(对于JavaScript叫test.js,Perl是test.pl, Ruby是test.rb,Tcl是test.tcl),依赖于test suite设置的脚本语言。
当创建test suites,通常这些测试案例需要一些通用的功能或者共用的数据。Squish使得创建单独的脚本文件成为可能,这些脚本文件包含共用的功能,并且可以根据需要用于所有的测试案例。Squish也使得创建和导入测试数据成为可能,这些测试数据可以被一个test suite中的任意一个测试案例分享。对于测试数据,Squish提供两个选择:一个特定测试案例的测试数据,和可以被一个test suite中的任意一个测试案例分享的测试数据。对于测试脚本,Squish提供了三种选择:一个特定测试案例的测试脚本(除了test.*文件),可以被一个test suite中的任意一个测试案例分享的测试脚本,以及从Squish 4.1开始可以被任意test suite中任意测试脚本共享的全局测试脚本。(全局脚本是一个先进的特性,不推荐新手使用。)
为了方便解释,假设我们有一个test suite在一个叫myapp_suite的文件夹中。进一步假设在这个test suite中有两个测试案例在文件夹 myapp_suite/tst_case1 和 myapp_suite/tst_case2中。如果我们使用Python脚本语言,第一个测试案例的文件名是myapp_suite/tst_case1/test.py,对于其他的脚本语言对应的测试案例的名字显而易见。
做出以上假设后,如果我们想为第一个测试案例存储一个特定测试案例的数据,必须存储在myapp_suite/tst_case1/testdata文件夹下,例如myapp_suite/tst_case1/testdata/case1_data.csv。如果我们想存储一些这两个测试案例共享的测试数据(以及其他的接下来将创建的测试案例),必须存储在myapp_suite/shared/testdata文件下。这些细节对于命令行使用者很有用,但是如果你使用Squish IDE,没有必要记住这些目录结构,因为Squish 可以创建和导入测试数据并且将它们存储在合适的位置,并且在脚本中只使用文件名(不带路径)来访问测试数据。
忽略测试数据是否是特定测试案例的或是否是整个test suite共享的,我们总是使用相同的技术来访问数据:调用testData.dataset函数,将测试数据的文件名(不包含路径)作为参数,该函数获取一个array或者tuple的引用(依赖具体的脚本的语言)用以访问数据(使用testData函数)。(通过给出一个带路径的文件名,也可以在任何地方访问测试数据,但是我们推荐将测试数据存储在相关的test suite或者测试案例中。)
如果我们想有一个或更多附加的脚本来整洁的划分功能,或者为了简化我们的test.*测试脚本,我们可以创建附加的脚本文件。在之前的假设下,如果我们有一个额外的特定测试案例的脚本我们必须将它放在与test.* 相同的路径下,例如,myapp_suite/tst_case1/extra.py。如果我们有额外的可以被test suite的所有测试案例访问的功能,必须将附加的脚本放在test suite的共享脚本文件夹中,如,myapp_suite/shared/scripts/common.py。从Squish 4.1开始,如果我们想有一个可以被任意一个test suite中的任意一个测试案例访问的功能,我们可以添加一个全局测试脚本到Global Scripts视图中。(Global Scripts视图一般在Squish窗口的右边)
忽略测试脚本是否是特定测试案例的,或者是否是被整个test suite共享的,或者是否是对于所有test suite是全局的,我们常常使用相同的技术来访问脚本的功能:我们调用source函数,将脚本的名字(包含路径)作为参数。通常我们通过getfile函数获取名字,该函数第一个参数是‘scripts’、第二个参数是脚本的名字(不带路径)——这个方法对特定测试案例的脚本和被test suite中任意测试案例共享的脚本测起作用,同样对全局共享脚本起作用。注意到在Ruby中,我们使用require函数代替source。
为了创建一个可以被一个test suite中任意测试案例共享的脚本,在Squish IDE的Test Suites窗口中的Test Suite Resources模块中,点击New Test Script File工具条按钮。将会创建一个新的空的共享脚本叫做script_1.py(或script_1.js,对于其他的语言,以此类推)。可以重命名这个脚本,或者立即输入一个新的名字,或者以后通过点击它弹出上下文菜单使用Rename选项实现。(下面截屏中重命名的共享脚本名叫common.py,因为它包含公用功能。)
The Squish IDE with the New Test Script File toolbutton tooltip visible
一旦共享脚本重命名,点击(或双击,依据平台和设置而定)以在Editor视图中展示它。可以编辑脚本添加一些必要的共享功能。
也可以(尽管不常见)添加只用于一个特定测试案例的共享脚本。操作方法是,在Test Suite窗口内Test Case Resources 模块中点击 New Test Script File工具条按钮。当然了我们可以往测试套件(和测试案例)中添加任意多个共享脚本文件。
如果你想创建一个全局共享脚本,即一个可以被任意测试套件中的任意测试案例访问的脚本,那么就打开或者点击Global Scripts视图窗口,并在此窗口中添加测试脚本。
Import Squish Resource 对话框
如果你想导入一个已经存在的脚本到一个测试套件(测试案例)的共享脚本的文件夹下,点击File->Import Test Resource。然后会弹出Import Squish Resource 对话框,输入脚本文件的名字来导入(或者使用Browse按钮选择)。然后设置Import As 组合框为‘Script’。如果想让测试套件中的所有测试案例(而不仅仅是当前展示的测试案例)共享一个脚本,就勾选Test Suite 单选按钮中的'Copy the file into the Test Suite for all Test Cases to share'。(因为通常在所有的测试案例之间共享脚本更方便,所以推荐点击这个单选按钮。)现在点击Finish按钮,导入的脚本在Squish中就可用了。
对于命令行使用者:
—— 不适用Squish IDE 也可以创建共享脚本。首先,在控制台,将路径改为测试套件的路径。然后创建一个新的子路径名为shared,已经存在了就不用创建。将当前路径改为shared,然后创建一个新的子路径为scripts,如果存在就不用创建。现在使用编辑器或者IDE来创建这个共享脚本并将它保存到测试套件的shared/scripts路径下。如果该脚本已经存在了,只需要将它拷贝到这个目录下即可。如果想添加一个全局共享脚本,只需要创建或者拷贝脚本到你想使用的路径下(或其中一个路径下)。
如何在测试套件之间共享脚本:
——有这样的情况:一些共享功能可能不仅在一个测试套件中有用、而且在大多数或者所有的测试套件中也有用。Squish使得所有测试套件访问全局共享脚本成为可能。通过创建一个或更多路径(放在任何位置都可以)来存放共享脚本,然后告诉Squish这个路径,或者通过Global Scripts视图窗口注册(通过该窗口可以将它们添加到paths.ini文件中),或者设置SQUISH_SCRIPT_DIR环境变量为一个或更多路径。例如,在Unix环境下,使用bash shell,导出 SQUISH_SCRIPT_DIR=$HOME/tests/shared_scripts.
一旦创建好了一个共享脚本,任何特定测试案例的脚本都可以使用它。注意,虽然共享脚本不总是使用特定语言导入机制导入的,毕竟,不是所有的语言都有这个机制,例如,JavaScript就没有。相反的Squish API提供了必要的函数。
定位一个共享脚本文件(或共享数据文件)的标准的方法是使用findFile函数。第一个参数是文件类型,它指定共享脚本应是‘scripts’。第二个参数是脚本的文件名(不带路径)。这个函数将会搜索所有的Squish使用的标准位置,并返回一个包含全路径的文件名。
一旦我们得到了共享脚本的全路径,将将它包括到测试案例的脚本中。通过使用source函数评价共享脚本即可实现——这将意味着就像共享脚本的文本在当前测试案例中source函数的位置运行一样。完成之后,共享脚本中创建的所有对象——尤其是类和函数——在测试案例的脚本中变得可用。
下面有一个例子,例子中我们共享一个脚本文件叫address_utility.py (或address_utility.js等,根据使用的脚本语言而定),因此我们可以访问其中的任一个函数——在这个例子中,insertDummyNamesAndAddress函数——添加一些名字和地址到addressbook AUT中以备测试用。
def main(): ... source(findFile("scripts", "address_utility.py")) insertDummyNamesAndAddresses() ...这里我们导入address_utility.py(或者相似的)脚本,该脚本中定义了一个insertDummyNamesAndAddresses函数,后面要用到这个函数。
对于脚本语言如Python支持导入,可以使用语言的标准导入机制。然而Squish的方法反而更方便,因为在大多数情况下,我们的共享脚本只与我们的测试相关。一般地,对于共享脚本最好使用Squish的source函数,但是对于导入标准模块最好使用特定语言的机制(如Python的import 和Perl的use)。在Ruby中,使用标准的require函数代替Squish的source函数。
正如我们制定一个测试案例脚本,我们也可以指定特定测试案例的数据文件。这种文件存储在测试案例的testdata路径下。然而,在一些情况下,我们想共享测试数据以使一个或对个测试案例可以访问它。在这种情况先我们将测试数据存储在测试套件中shared/testdata路径下。
可以通过Squish IDE的导入文件功能将测试数据添加进来——Squish可以读取.tsv(以tab间隔开值的格式),.csv(以逗号间隔值的格式),和.xls(微软Excel电子表格式,而非.xlsx格式)。或者我们可以用终端创建路径,然后将测试数据拷贝到该目录下。这些技术用于共享测试数据,是否使用Squish IDE或者手动操作,对于添加共享脚本都是一样的,只要我们使用合适的testdata路径即可(不是scripts路径)。
尽管顶层路径结构必须跟着我们描述的,,那种结构中——即,在testdata路径下——你可以任意的创建子路径以及构造成你期待的样子。
使用findFile函数可以获取测试数据,只有此时第一个参数必须是‘testdata’,第二个参数是你想访问的测试数据文件的名字。实际上我们不需要为测试数据使用findFile函数;相反的我们使用testData.dataset函数,使用Squish的testData API访问数据,下面将会讲到。
- Ⅰ.18.1 如何存储和定位共享脚本和共享数据
- Ⅰ.18 如何创建和使用共享数据和共享脚本
- 线程的数据共享和不共享
- 文件共享和存储服务器
- IPC 信号和共享存储
- CheckBoxPreference数据存储和共享的一种方式
- 如何在应用和设备间共享数据之一共享简单的数据之发送
- 如何在应用和设备间共享数据之一共享简单的数据之接收
- linux 和xp共享数据
- 数据共享ContentProvider和ContentResolver
- linux和win共享数据
- 多线程之不共享数据和共享数据
- 共享内存和线程局部存储
- mmap(内存影射)和shm(共享存储)
- android共享数据之SharedPreferences-组建间的数据共享和应用间的数据共享
- java多线程共享数据和数据并发
- 数据共享,内存映射文件和虚拟内存,共享内存
- android 数据存储和访问方式四:ContentProvider(内容提供者、数据共享)详解
- cxf+spring发布webservice和调用
- memset清空一个结构类型的变量或数组
- 【第二节】android增量升级之使用so文件进行增量升级
- java list<integer>一组不连续的数字进行每10个一组分组,要求各组元素之和差值最小。list%10>=5的单独算一组,否则归并到任意一组。
- C++中静态成员函数和非静态成员函数的区别
- Ⅰ.18.1 如何存储和定位共享脚本和共享数据
- myeclipse开启后卡死、building workspace缓慢 问题解决
- tomcat使用APR后性能竟然毫无提升
- 关于setBackgroundResource 中偶尔会出现padding失效问题
- android moveTaskToback的作用 退出后台
- 顺序表的基本操作
- Android RatingBar自定义替换系统图片
- iOS,利用URL Schemes跳转到设置wifi、蜂窝移动网络页面
- 机器学习系列(1)_逻辑回归初步