如何使用RobotFramework编写好的测试用例(下)

发表于:2021-4-26 09:29

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

 作者:tkb至简    来源:博客园

分享:
  用户关键字
  1.应该容易理解,和工作流测试具有相同的规则。
  2.不同的抽象级别。
  3.可以包含一些编程逻辑(比如循环,if/else等等)
  · 尤其是在一些低级的关键字种。
  · 复杂的逻辑一般在测试库种而不是在用户关键字中。
  变量
  1.封装一些长的或者复杂的值。
  2.在关键字之间传递信息。
  变量的命名
  · 名字明确但不要太长。
  · 可以对变量进行注释。
  · 使用一致的大小写规范:
  1)在一个确定的范围内部对局部变量使用小写。
  2)其它情况使用大写(全局,套件或测试用例级别的变量)。
  3)空格和下划线都可以作为单词分隔符。
  · 推荐在变量表中也要列出那些会动态设置的变量:
  1)使用内置的关键字Set Global Variable,Set Suite Variable等对变量动态设置值。
  2)初始值应该解释真正的值在哪里/如何设置。
  样例:
  *** Settings ***
  Suite Setup       Set Active User
  *** Variables ***
  # Default system address. Override when tested agains other instances.
  ${SERVER URL}     http://sre-12.example.com/
  ${USER}           Actual value set dynamically at suite setup
  *** Keywords ***
  Set Active User
      ${USER} =    Get Current User    ${SERVER URL}
      Set Suite Variable    ${USER}
  传参和返回值
  1.常的做法是从关键字中返回值,再将它们赋值给其它变量,然后将它们作为实参传给其它关键字。
  2.另一种方法是将信息存在一个测试库中,或者使用内置的Set Test Variable关键字。
  · 避免在测试用例级别使用编程风格。
  · 使用此方法可能会更复杂,并使得可复用关键字变得困难。
  好的例子:
  *** Test Cases ***
  Withdraw From Account
      Withdraw From Account    $50
      Withdraw Should Have Succeeded
  *** Keywords ***
  Withdraw From Account
      [Arguments]    ${amount}
      ${STATUS} =    Withdraw From User Account    ${USER}    ${amount}
      Set Test Variable    ${STATUS}
  Withdraw Should Have Succeeded
      Should Be Equal    ${STATUS}   SUCCESS
  不是很好的例子:
  *** Test Cases ***
  Withdraw From Account
      ${status} =    Withdraw From Account    $50
      Withdraw Should Have Succeeded    ${status}
  *** Keywords ***
  Withdraw From Account
      [Arguments]    ${amount}
      ${status} =    Withdraw From User Account    ${USER}    ${amount}
      [Return]    ${status}
  Withdraw Should Have Succeeded
      [Arguments]    ${status}
      Should Be Equal     ${status}    SUCCESS
  避免使用Sleep关键字
  1.同步测试时,Sleep是一种非常不稳定的方式。
  2.安全边际会使得平均Sleep时间太长。
  3.使用那些具有轮询确定操作发生的关键字代替Sleep关键字:
  · 关键字名称通常以Wait开头
  · 应该设置一个等待的最大时间
  · 内置的关键字Wait Unitl Keyword Succeeds内部可能封装了其它关键字
  4.有时Sleep是最简单的解决方案:
  · 总是要小心使用
  · 不要在用户关键字中使用,因为它们可能被其它测试或关键字使用。
  · 在调试时阻止执行可能很有用。
  以上翻译自https://github.com/robotframework/HowToWriteGoodTestCases/blob/master/HowToWriteGoodTestCases.rst
  我们AT中的一些约定
  我们项目现在做的是接口测试,比如对api/user/mobileregister接口进行测试。
  测试套件的命名:TC_接口类名_方法名,比如上面的接口对应的套件名称是TC_User_MobileRegister。其中TC是TestCase的缩写,本该是TS【TestSuite】的,但一直这样用了,姑且就这样用吧。User是上面的接口所对应的类型,MobileRegister是该类中方法名,注意都是单词首字母大写。对一个接口的测试必须都写在一个测试套件中。
  测试用例的命名:没有强制要求,如果说有,就是名字要明确、有序
  比如,下面这个创建购买订单时的测试用例。明确体现在每个case名称后面都有简短的关键汉字说明;有序体现在有数字编号。还有一点是,如果有多个单词,单词之间没有分隔符,并且单词首字母大写。
  变量的命名:
  全局变量都定义在Common文件夹下的variables.txt文件中,见下图。规则是必须以G_开头,单词首字母大写,只有一个单词的话全部大写也可以。比如${G_Server}或${G_SERVER}都可以,但有两个及以上单词时建议使用${G_ServerUrl}(这里还有几个之前没遵守的变量还没改)。
  套件范围的变量命名建议单词之间以下划线分隔。比如${user_name},${user_Name}都可以。
  测试用例中的变量和关键字中的变量建议使用首个单词首字母小写,比如${userName},${tradePwd}等等。
  注意:robot framework IDE中,如果一个关键字定义的形式参数包含${userName},但在测试用例中包含了一个从服务端返回的UserName字段,你将返回的值放到了${user_name}或${User_Name},验证期望的${userName}和返回的值是否相等时,RF会将这两个肉眼看着不同的变量当作同一个变量对待,所以必须明确区分这两个要比较的变量。比如,将返回的值存在变量${res_userName}中。
  关键字的命名:
  目前项目中有两种用户关键字,一种是在Common文件夹下的resource.txt中的关键字,一种是每个测试套件中定义的关键字。
  resource.txt文件中的关键字是经常使用的一些关键字,命名规范是每个单词首字母大写,区别于系统关键字。虽然字体颜色本身有所区分了,但是形式上再有所区分不是更明显了吗,而且颜色可以随意设置的。见下图。
  每个测试套件中定义的关键字是只在该测试套件中使用关键字,命名规范是单词之间以下划线分隔,分割线之间的单词或词组都是首字母小写。见下图。

      本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号