Posted on 23-09-2009
Filed Under (技术) by waterlin

最近用 Perl 写了不少自动化测试工具,用到了一些模块,有几个觉得挺好的,记录下来,以后说不定还有需要用到呢。

  1. Smart::Comments

    Smart comments 提供了一个调试与追踪代码的简单方法,可以打印一个变量值,也可以追踪、显示一个循环的进度等。

    最巧妙的是,当你完成了程序的编写,不需要这些调试代码的时候,只需要注释掉

    use Smart::Comments;
    

    这行就可以了。下次还需要再次调试代码的时候,不需要再添加一遍追踪代码,只要把上面那行代码重新激活就可以了。

    如果你不在程序里用上面的语句显式的激活 smart comments,我们也可以在运行脚本的时候,显示地激活 smart comments 模块:

    $ perl -MSmart::Comments $application.pl
    
  2. 给 Perl 提供类似 C++ 宏的功能

    如果有一段代码,需要在多个地方重复用到,但是写成函数却并不是很合适,这个时候,最好的办法,是用类似于 C++ 的宏定义,在需要的地方插入这个宏即可。可以用 Filter::cpp 这个模块来实现,安装这个模块后,用起来和 C++ 的宏就没有什么区别了。

  3. 在 Perl 里操作 Excel 文件

    现在很多测试用的测试用例 (test case) 以及测试报告都是用 Excel 来写的,要完成自动化测试,Perl 脚本最好能够自动从 Excel 读入数据、并在相应位置上记录测试结果。与这相关的工作,可以用下面的模块来完成:

    如果我们需要读入 (parse) 一个已有的 Excel 文件,可以使用 Spreadsheet::ParseExcel,适用于 Excel 95-2003 版本。如果你用的是 Excel 2007 版本,则你需要用 Spreadsheet::XLSX 这个模块。

    如果我们需要创建一个全新的 Excel 文件并写入数据,我们可以用 Spreadsheet::WriteExcel 模块。

    如果我们需要打开一个 Excel 文件读入测试数据、再输出测试数据到这个 Excel 文件,我们需要使用 Spreadsheet::ParseExcel::SaveParser 这个模块,它综合了 Spreadsheet::ParseExcel 和 Spreadsheet::WriteExcel 的功能。这里特别强调一下,不管是修改 (overwrite) 已有的 Excel 数据,还是创建 (add) 新的 Excel 数据,均可以使用 AddCell 这个方法,如下所示:

        # Overwrite the string in cell A1
        $worksheet->AddCell( $row, $col, 'New string' );
    
        # Add a new string in cell B1
        $worksheet->AddCell( $row, $col + 1, 'Newer' );
    

    最重要的是,在用 AddCell 修改或是添加了新数据后,一定要记得保存 Excel 文件,否则修改不会被保存下来!保存文件用下面的语句:

        # Write over the existing file or write a new file.
        $template->SaveAs('newfile.xls');
    

    如果是同一个文件名,则把数据保存到原来的文件;如果是新文件名,则把数据保存到新的文件里。

  4. Badger::Timestamp

    Badger::Timestamp 模块可以很方便地对时间戳 (timestamp) 进行修改、比较等操作,相当方便。

© 2009, 浏忙大爆炸. All rights reserved.
除非注明,浏忙大爆炸文章均为原创,转载请以链接形式标明本文地址。

(1) Comment    (2,013) Views    Read More   

Comments

wen on 8 October, 2010 at 4:17 am #

請教一下,我是perl新手,如果我想用perl抓取以下網站的商品名稱、商品圖片、商品網址…該用什麼perl模組呢?那語法又是如何?

網站網址
http://buy.yahoo.com.tw/?catitemid=12176

[Reply]


Post a Comment
Name:
Email:
Website:
Comments: