robotframework笔记3--如何编写好的测试用例使用机器人的框架

命名

测试套件的名称
 
之后,你可能应该描述你的名字。
名称是从文件或目录名自动创建:
扩展了。
强调了转换空间。
如果名称都是小写,大写的单词是。
名称可以是比较长的,但是太长的名字不方便 文件系统。
“顶层套房的名字可以覆盖从命令行使用的 姓名选项,如果需要。
实例:
 
  • login_tests.robot -> Login Tests
  • IP_v4_and_v6 -> IP v4 and v6
 
测试用例名称
 
试验名称应描述类似套房的名字。
如果一套包含许多类似的测试,和套件本身是好的名字,名字可以 试验。
名字就是你指定的测试用例文件没有任何 转换。
例如,如果我们要在一个文件中无效的登录相关测试invalid_login.robot,这些会好的测试用例的名字:

*** Test Cases ***
Empty Password
Empty Username
Empty Username And Password
Invalid Username
Invalid Password
Invalid Username And Password

这些名字有点长:

*** Test Cases ***
Login With Empty Password Should Fail
Login With Empty Username Should Fail
Login With Empty Username And Password Should Fail
Login With Invalid Username Should Fail
Login With Invalid Password Should Fail
Login With Invalid Username And Invalid Password Should Fail

关键词名称
 
还应明确描述和关键字的名称。
要解释什么是关键词,而不是如何做的。
非常不同的抽象层次(如输入文本或管理员登录到系统 )。
没有明确的指导方针应充分标题关键字套管或应 只有第一个字母是大写的。
标题的关键词的名字是套管经常用时短(例如输入文本)。
资本只是第一个字母一般用关键词 那样的句子(如管理员登录到系统)。这些 关键词通常也是高水平。
好 :
*** Keywords ***
Login With Valid Credentials
坏:
*** Keywords ***
Input Valid Username And Valid Password And Click Login Button
命名的安装和拆卸 
 
尝试使用名字做什么。
尽可能使用现有的关键词。
更抽象的名字可安装或拆卸包含无关的步骤。
在名称列表的步骤是复制和维护的问题 (登录到系统中,添加用户,激活报警和制衡)。
使用一般的东西,往往更好(例如初始化系统)。
内置的关键词运行关键词如果关键词执行较低的 台阶已经存在好的工作。
当你不确定最佳使用可重复使用的安装程序需要的情况或是 tearDown只有一次。
每个人都有这些测试工作应该明白安装或拆卸不 。
*** Settings ***
Suite Setup     Initialize System
好(如果只是用一次)。 
*** Settings ***
Suite Setup     Run Keywords
...             Login To System    AND
...             Add User           AND
...             Activate Alarms    AND
...             Check Balance
坏:
*** Settings ***
Suite Setup     Login To System, Add User, Activate Alarms And Check Balance
文档
 
测试用例文档
 
加上全面的文档测试用例文件通常是一个好主意。
应该包含的背景信息,为什么测试的创建,对 执行环境的笔记,等。
不要只是重复测试套件的名称。
更好,如果它是不是真的需要没有任何文件。
不包括测试用例太多细节。
测试应该清楚一个人。
重复信息是浪费和维修问题。
文件可以包含更多信息的链接。
考虑使用测试套件的元数据,如果你需要的文献信息 表示为名称-值对(例如版本:1或Linux的:)。
文件和顶层套房元数据可以从命令行使用 文件和——元数据选项,分别。
好:

*** Settings ***
Documentation    Tests to verify that account withdrawals succeed and
...              fail correctly depending from users account balance
...              and account type dependent rules.
...              See http://internal.example.com/docs/abs.pdf
Metadata         Version    0.1

坏(特别是如果套件为好account_withdrawal.robot):
*** Settings ***
Documentation    Tests Account Withdrawal.
测试用例文档
 
测试通常不需要的文件。
名字和父套件和测试自己的名字 可能文件应给出足够的背景信息。
测试用例的结构应该没有文件或其他 评论是够清楚的。
标签通常更灵活,提供更多的功能(统计, 包含/排除,比文件等)。
有时测试文档是有用的。不需要害怕使用它。
*** Test Cases ***
Valid Login[Tags]    Iteration-3    Smoke    Open Login Page
    Input Username    ${VALID USERNAME}
    Input Password    ${VALID PASSWORD}
    Submit Credentials
    Welcome Page Should Be Open
坏:

*** Test Cases ***
Valid Login
    [Documentation]    Opens a browser to login url, inputs valid username
    ...                and password and checks that the welcome page is open.
    ...                This is a smoke test. Created in iteration 3.
    Open Browser    ${URL}    ${BROWSER}
    Input Text    field1    ${UN11}
    Input Text    field2    ${PW11}
    Click Button    button_12
    Title Should Be    Welcome Page

使用关键词的文件
 
如果关键词比较简单,不需要。
好的关键字和参数的名称和结构清晰,应该够了。
重要的是记录的参数和返回值。
在资源文件中的文档生成与显示libdoc编辑 如骑可以显示它在完成关键字和其他地方。
测试套结构
 
在一个测试套件应该是彼此相关。
常见的安装或拆卸往往是一个很好的指标。
不应该有太多的测试(最大10)在一个文件,除非他们数据驱动测试。
测试应该是独立的。使用安装/拆卸的初始化。
有时测试之间的依赖性是无法避免的。
例如,它可以把太多的时间来初始化所有的测试分开。
没有相关的测试长链。
考虑验证使用内置的以前的测试状态{ } $沪指测试状态变量。
测试用例的结构
 
测试用例应该很容易理解。
一个测试用例应该检测一件事。
东西可小(一个单一功能的一部分)或大(端到端)。
选择合适的抽象层次。
使用抽象水平一致(抽象原则的单级)。
不包括在测试用例层不必要的细节。
两种测试用例:
工作流测试
数据驱动测试
工作流测试
 
通常这些阶段:
前提(可选,往往在设置)
行动(做系统)
验证(验证结果,强制)
清理(可选,总是在拆卸来保证它的执行)
关键词的描述一个测试。
使用明确的关键字的名称和适当的抽象层次。
应包含足够的信息来手动运行。
不需要的文档或注释说明的测试。
不同的测试可以有不同的抽象层次。
一个详细的功能测试更精确。
端到端的测试可以在很高的水平。
一个测试应该只使用一个抽象层
不同的风格:
低层次的细节和集成测试技术测试。
“可执行规范”作为要求。
使用领域语言。
每个人(包括顾客和/或产品所有者)应该明白。
在测试用例的水平没有复杂的逻辑。
在环或if / else结构的话。
使用变量的赋值与护理。
测试用例不应该像脚本!
最大10步,preferably less。
使用“正常”的关键字驱动方式:
*** Test Cases ***
Valid Login
    Open Browser To Login Page
    Input Username    demo
    Input Password    mode
    Submit Credentials
    Welcome Page Should Be Open

使用更高级别的例子:

*** Test Cases ***
Valid Login    Given browser is opened to login page
    When user "demo" logs in with password "mode"
    Then welcome page should be open
数据驱动测试
 
每测试一个高层次的关键词。
不同的参数创建不同的测试。
一个测试可以运行相同的关键词多次验证多个 相关变化
如果关键字作为用户关键词来实现的,它通常包含 相似的工作流程工作流测试。
如果需要在其他地方,这是一个好主意,创造了在同一文件 测试使用。
推荐使用测试模板功能。
不需要重复多次的关键词。
更容易在一个测试的多种变化。
可能的话,推荐,名称的列标题
如果一个非常大的数量的测试是必要的,考虑发电的基础 外部模型。
例子:
*** Settings ***
Test Template         Login with invalid credentials should fail

*** Test Cases ***
    USERNAME PASSWORDInvalid Username
      invalid              ${VALID PASSWORD}Invalid Password
${VALID USERNAME}    invalid
Invalid Both          invalid              invalid
Empty Username${EMPTY}${VALID PASSWORD}Empty Password${VALID USERNAME}${EMPTY}Empty Both${EMPTY}${EMPTY}

*** Keywords ***

Login with invalid credentials should fail[Arguments]${username}${password} Input Username ${username} Input Password ${password} Submit Credentials Error Page Should Be Open

web演示项目包含一个可执行版本的这个例子

 
 
用户关键词
 
应该很容易理解。
同样的规则与流程测试。
不同的抽象层次。
可以包含一些可编程逻辑(for循环,如果/其他)。
特别是在低水平的关键词。
复杂的逻辑,而不是在图书馆用户关键词。
变量
 
封装长和/或复杂的价值。
将信息从他们的命令行使用——变选项
之间传递信息的关键词。
变量命名
 
清晰但不太长的名字。
可以使用注释在变量表文件他们更多。
使用CASE:
较低的情况下,局部变量只适用一定范围内。
与他人的大写(全球、套房或测试水平)。
空间和下划线可以作为一个字分离器。
推荐名单也变量,动态地设置在变 表。
通常使用内置的关键词集集套变。
初始值应该解释/真实值设置。
例子:
*** 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}
 
传递和返回值
 
常见的方法是返回值分配给变量 关键词,然后通过他们对其他关键词的争论。
清晰和易于理解的方法。
允许创建独立的关键词,方便使用。
看起来像编程从而不太好的测试用例的水平。
另一种方法是将信息存储在图书馆或使用内置设置测试变量关键词
避免对测试用例层次的编程风格。
可以遵循,使重用关键词更难更复杂。
 
*** 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 Succeede
d    ${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
睡眠是一个非常脆弱的方式同步测试。
安全边际造成太长睡在平均。
而不是睡觉,使用关键字,调查具有一定的行为发生。
关键词的名字开始等待…。
应该有一个最大等待时间。
可能把其他关键词里面自带的关键词等到关键词成功。
有时睡觉是最简单的解决方法。
总是小心使用。
不要使用用户的关键字,通过试验或其他关键词经常使用。
可以是有用的,在调试停止执行。
对话框库通常更好的作品。
 

【直译】

原文地址:https://www.cnblogs.com/kuihua/p/5378638.html