创建测试工程、测试套件、测试用例——自动化测试精解(3)

发表于:2020-12-31 10:30

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:刘云    来源:51Testing软件测试网原创

  3.1.1  创建测试工程、测试套件、测试用例
  打开RIDE,选择File→New Project,在弹出的New Project对话框中输入必要的信息,如图3-2所示。
图3-2  在New Project对话框中输入信息
  在Type选项组中单击Directory单选按钮。Directory的意思是创建一个目录,这样在这个目录下可以创建多个测试套件。如果单击File单选按钮,就会创建一个测试套件,不能再在下面创建子目录和测试套件了。
  在Format选项组中可以任选,作者比较喜欢TSV格式(用制表符作为分隔符)。TSV格式的文件可以用任何文本编辑器打开,相对于TXT格式来说,更易读一些;相对于HTML格式来说,结构要简单得多。用各种源代码版本控制工具来比较各个版本之间的改动,TSV格式也更直观。最不推荐使用HTML格式,因为用版本控制工具比较不同版本间的变化时,HTML格式不易阅读。TXT格式用4个空格作为分隔符,ROBOT格式原来用“|”作为分隔符,编写本书时RIDE的版本是1.7.3.1,它也用空格作为分隔符,但很难看出它和TXT格式有什么区别。
  创建好测试工程之后,右击Assistant Robot Project,选择New Suite选项,在弹出的Add Suite对话框里输入测试套件的名字,如图3-3所示。
  在Type选项组中单击File单选按钮,这里我们要创建一个测试套件,而不是要创建一个子目录。
  在创建好测试套件之后,右击Positive Function TestSuite,然后选择New Test Case选项,创建测试用例。在弹出的对话框中输入测试用例的名字(如?Hello_TestCase)即可。最后?RIDE中的结构如图3-4所示。
    
图3-3  Add Suite对话框

图3-4  RIDE中的结构

  3.1.2  创建资源文件和用户关键字
  经过初步分析,在每一个测试用例里都要向助理机器人发送一条指令,然后等待助理机器人回复,所以可以抽象出两个关键操作,分别是发送指令和接收助理机器人的回复。发送和接收功能依赖于具体的助理机器人的实现方式,这里用一种简单的方式来实现—用户把问题存入一个文本文件里,然后助理机器人用程序读取此文本文件,并根据文件里的问题给出回复,把回复内容写入另一个文本文件中。助理机器人系统的模拟程序可以用Python实现。
  #!/usr/bin/env python
  # -*- coding: UTF-8 -*-
  import datetime
  import os
  import operator
   
  def Reply():
      curDir=os.path.dirname(__file__)
      src_f=os.path.join(curDir,'questions.txt')
      dst_f=os.path.join(curDir,'answer.txt')
      fn_src=open(src_f,'r',encoding='utf8')
      msg=fn_src.readline()
      fn_src.close()
      inputMsg=u'问:{}'.format(msg)
      print(inputMsg)
      fn_dst = open(dst_f, 'w',encoding='utf8')
      retMsg=""
      if?operator.eq(msg.strip(), '你好!'):
          nowTime = int(datetime.datetime.now().strftime('%H'))
          retTime=""
          if nowTime >= 18:
              retTime=u"晚上"
          elif nowTime >=12:
              retTime=u"下午"
          elif nowTime < 12:
              retTime=u"上午"
          retMsg=u"主人,{}好!".format(retTime)
   
      elif operator.eq(msg.strip(), '现在几点了?'):
          nowTime = datetime.datetime.now().strftime('%H:%M')
          retMsg=u"现在时刻{}".format(nowTime)
      elif operator.eq(msg.strip(), '今天天气怎么样?'):
          retMsg=u"今天早上微风,温度23°,中午到下午晴朗,最高温度达32°,傍晚有小到大雨, 请主人出门注
          意防晒和准备雨具哦!"
  
      else:
          retMsg = u"对不起!我现在还不能理解您在说什么,请尝试其他问题吧。"
      print ("答:%s" % retMsg)
      fn_dst.write(retMsg.strip())
      fn_dst.close()
   
  if __name__ == "__main__":
  Reply()
  我们和助理机器人之间的交互操作适用于所有测试点,也可以自定义关键字来实现这两个操作。它们的作用范围是整个测试工程,我们在测试工程下创建一个资源文件来保存这些关键字。右击Assistant Robot Project,选择New Resource选项。在弹出的New Resource File对话框(见图3-5)里输入资源文件的名字Operation_Resource,在Format选项组中单击TSV单选按钮。
图3-5  New Resource File对话框
  为了方便使用,在资源文件里定义存放用户问题和助理机器人回复的文件变量以及助理机器人程序中的变量。在弹出的对话框中,单击Add Scalar按钮,添加标量,如图3-6所示。
图3-6  单击Add Scalar按钮,添加标量
  Robot Framework提供了读取本地文件和运行本地程序的OperatingSystem库,我们把它作为Library加到Operations_Resource文件里。OperatingSystem提供的关键字及其用法可以到Robot Framework官网查看。
  注意,这里没有用完整路径定义变量,而且目录分隔符也不是Windows系统的目录分隔符“\”,而使用了类似于Linux系统的文件路径方式。Robot Framework能根据运行的平台自动把Linux格式的路径转换成相应平台的路径,也可以用“${/}”作为目录分隔符显式地告诉Robot Framework根据运行的平台进行替换。Robot Framework本身是支持跨平台的,我们写的测试数据最好也能跨平台,这样不管在Windows系统上还是Linux系统或macOS上,都不需要修改测试数据。
  右击Operation_Resource,选择New User Keyword,打开New User Keyword对话框(见图3-7)来创建两个关键字。
  一个关键字为Send_Message,它带一个${参数msg},用于存储我们要发送给助理机器人的指令。
图3-7  New User Keyword对话框
  另一个关键字为Get_Reply,它带一个参数${content},用于存储助理机器人回复的内容。
  Send_Message与Get_Reply关键字的定义分别如图3-8和图3-9所示。
图3-8  Send_Message关键字的定义
图3-9  Get_Reply关键字的定义
  灰色的文本框前面的字段是使用的变量,和Python中一样,变量赋值前不需要声明类型。加粗的字体是关键字,这些关键字都来自OperatingSystem库。在RIDE,从菜单栏中选择Tools→Search Keywords或直接按F5键会弹出Search Keywords对话框(见图3-10),在Source下拉列表框中选择OperatingSystem会列出这个库的所有关键字及其解释和用法。
图3-10  Search Keywords对话框

版权声明:51Testing软件测试网获得人民邮电出版社和作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号