【转】Robot Framework 快速入门
目錄
介紹
概述
安裝
運(yùn)行demo
介紹樣例應(yīng)用程序
測試用例
第一個測試用例
高級別測試用例
數(shù)據(jù)驅(qū)動測試用例
關(guān)鍵詞keywords
內(nèi)置關(guān)鍵詞
庫關(guān)鍵詞
用戶定義關(guān)鍵詞
變量
定義變量
使用變量
組織測試用例
測試套件
啟動和卸載
使用標(biāo)簽
創(chuàng)建測試庫
?
?
?
介紹
概述
Robot Framework?是一個關(guān)鍵詞驅(qū)動的自動測試框架。測試用例位于HTML或者TSV(以tab分隔值)文件,使用在測試庫中實(shí)現(xiàn)的關(guān)鍵詞來在測試中運(yùn)行程序。因?yàn)镽obot Framework?是靈活和可擴(kuò)展的,所以它很合適用于測試具有多種接口的復(fù)雜軟件:用戶接口,命令行,web service,編程接口等。
Robot Framework?是開源軟件和安裝包,源碼和相關(guān)文檔可通過http://robotframework.org獲得。本篇指南計劃介紹Robot Framework?的基本概念。如果需要詳細(xì)的技術(shù)描述,請查閱Robot Framework User Guide.
安裝
安裝Robot Framework?的前提是Python被安裝。另外,需要使用用Java編寫的測試庫,?Jython?必須被安裝。對使用本篇快速入門來說Pyhon已經(jīng)足夠了。
共有三種不同的安裝Robot Framework?的方法,從而可以選擇最合適你的方式。詳細(xì)安裝說明可以在project web pages上找到.
框架安裝好后,將包含有啟動腳本的安裝目錄添加到PATH環(huán)境變量中。在UNIX-like?系統(tǒng)中應(yīng)該可以自動完成,但在windows系統(tǒng)必須從?Control?Panel?>?System?>?Advanced?>?EnvironmentVariables?添加如下例子.?C:/Python25/Scripts?to?PATH.
安裝成功后可以用命令pybot –version測試,應(yīng)該輸出如下:
$ pybot --version
Robot Framework 2.0.3 (Python 2.5.2 on linux2)
運(yùn)行demo
本篇快速入門指南使用一個可執(zhí)行的demo。為了運(yùn)行它啟動一個命令shell,cd到本文件目錄,在命令行輸入下面的命令:
pybot quickstart.html
在本文件內(nèi)的測試將被執(zhí)行并產(chǎn)生如下報告:
report.html
測試結(jié)果概述
log.html
測試結(jié)果細(xì)節(jié)
output.xml
以輕型XML保存的測試結(jié)果,便于與其他工具集成
在瀏覽器中打開?report.html?(此鏈接只有在本指南被執(zhí)行后才能工作),?然后打開此鏈接查看結(jié)果。report.html?文件鏈接著?log.html?文件。
有一些命令行選項(xiàng)可以用來控制測試執(zhí)行和產(chǎn)生的結(jié)果。完整列表可以使用pybot –help?來顯示。例如如下命令修改了日志文件和頂層測試套件的名字:
pybot --log mylog.html --name My_Fine_Tests quickstart.html
注意
使用jybot啟動腳本執(zhí)行本快速入門指南不能與Jython 2.2工作。使用Jython2.5執(zhí)行需要使用-Dsys.executable?選項(xiàng)設(shè)置可執(zhí)行文件。
介紹樣例應(yīng)用程序
本篇指南的樣例應(yīng)用程序是一個經(jīng)典登陸樣例的變種:?它是一個使用Python編寫的基于命令行的認(rèn)證服務(wù)器。 樣例應(yīng)用允許用戶做三件事情:
- 使用有效的密碼創(chuàng)建一個用戶。
- 使用有效的用戶名和密碼登陸。
- 修改已存在賬戶的密碼。
應(yīng)用程序在sut目錄下,可以使用命令python sut/login.py?來執(zhí)行。嘗試使用不存在的用戶賬戶或者錯誤密碼登錄將會長生同樣的錯誤信息:
> python sut/login.py login nobody P4ssw0rd
Access Denied
在使用有效的密碼創(chuàng)建一個用戶賬戶后成功登錄:
> python sut/login.py create fred P4ssw0rd
SUCCESS
?
> python sut/login.py login fred P4ssw0rd
Logged In
一個有效的密碼必須滿足兩個要求:?它必須是7-12?字符長,?它必須包含大寫或者小寫字母和數(shù)字,但是不能包含特殊字符。嘗試使用非法的密碼創(chuàng)建用戶會失敗:
> python sut/login.py create fred short
Creating user failed: Password must be 7-12 characters long
?
> python sut/login.py create fred invalid
Creating user failed: Password must be a combination of lowercase and
uppercase letters and numbers
使用非法信任狀修改密碼會產(chǎn)生和使用非法信任狀登錄一樣的錯誤。新密碼的有效性將會被驗(yàn)證,如果不合法如下錯誤信息會被顯示:
> python sut/login.py change-password fred wrong NewP4ss
Changing password failed: Access Denied
?
> python sut/login.py change-password fred P4ssw0rd short
Changing password failed: Password must be 7-12 characters long
?
> python sut/login.py change-password fred P4ssw0rd NewP4ss
SUCCESS
本應(yīng)用程序使用一個簡單的數(shù)據(jù)庫文件來追蹤用戶的狀態(tài)。文件在操作西洞庭的臨時文件目錄。
測試用例
第一個測試用例
Robot Framework?測試用例使用一種簡單表格語法。下表含有兩個樣例:
- 用戶可以創(chuàng)建賬戶并登入
- 用戶使用錯誤密碼無法登入
| Test Case | Action | Argument | Argument |
| User can create an account and log in | Create Valid User | fred | P4ssw0rd |
| ? | Attempt to Login with Credentials | fred | P4ssw0rd |
| ? | Status Should Be | Logged In | ? |
| ? | ? | ? | ? |
| User cannot log in with bad password | Create Valid User | betty | P4ssw0rd |
| ? | Attempt to Login with Credentials | betty | wrong |
| ? | Status Should Be | Access Denied | ? |
注意 這些測試比起自動測試用例更像用英語手工寫的測試。Robot Framework?使用關(guān)鍵詞驅(qū)動的方式,支持用自然語言來編寫可以抓住動作和期望值的本質(zhì)的測試。測試用例由關(guān)鍵詞(通常在第二列)和它們可能的參數(shù)組成。
高級別測試用例
測試用例也可以通過使用不攜帶參數(shù)的高級別關(guān)鍵詞來創(chuàng)建。這種風(fēng)格允許使用完全的自由文本以便于進(jìn)行交流,即使是和非技術(shù)人員或者其他利益相關(guān)者。T Robot Framework?不強(qiáng)制使用任何風(fēng)格來編寫測試用例,它可以用于行為驅(qū)動開發(fā)behavior-driven development?(BDD)推薦的given-when-then?格式的樣例,如下所示。
| Test Case | Steps |
| User can change password | Given a user has a valid account |
| ? | when she changes her password |
| ? | then she can log in with the new password |
| ? | and she cannot use the old password anymore |
這種測試用例或者用戶故事風(fēng)格的測試用例的類型很適合用于acceptance test-driven development?(ATDD).?在?ATDD?中接收測試在實(shí)現(xiàn)實(shí)際產(chǎn)品特性前編寫并且他們反映了需求。
數(shù)據(jù)驅(qū)動測試用例
通常部分測試用例除了部分不同的輸入或者輸出數(shù)據(jù)外都.在這些情況下數(shù)據(jù)驅(qū)動,如下面六個測試用例,允許在不復(fù)制工作流的情況下改變測試數(shù)據(jù) 。
?
| Test Case | Action | Password | Expected error message |
| Too short password | Creating user with invalid password should fail | abCD5 | ${PWD INVALID LENGTH} |
| Too long password | Creating user with invalid password should fail | abCD567890123 | ${PWD INVALID LENGTH} |
| Password without lowercase letters | Creating user with invalid password should fail | 123DEFG | ${PWD INVALID CONTENT} |
| Password without capital letters | Creating user with invalid password should fail | abcd56789 | ${PWD INVALID CONTENT} |
| Password without numbers | Creating user with invalid password should fail | AbCdEfGh | ${PWD INVALID CONTENT} |
| Password with special characters | Creating user with invalid password should fail | abCD56+ | ${PWD INVALID CONTENT} |
在這些測試中每個測試用例只有一個關(guān)鍵詞,它用于用給定的密碼創(chuàng)建用戶并檢查創(chuàng)建過程失敗返回的錯誤信息。注意錯誤信息使用variables?變量指定。
關(guān)鍵詞keywords
測試用例使用關(guān)鍵詞創(chuàng)建,關(guān)鍵詞可以從三種來源得到:總是可用的built-in keywords?內(nèi)置關(guān)鍵詞,從導(dǎo)入的測試庫中得到的library keywords?庫關(guān)鍵詞和使用同樣表格語法創(chuàng)建的用于創(chuàng)造測試用例的user keywords?用戶關(guān)鍵詞。
內(nèi)置關(guān)鍵詞
一些常見有用的關(guān)鍵詞如Get Time?和?Should Be Equal?總是可用的。技術(shù)上來說這些關(guān)鍵詞來自于BuiltIn?測試庫,你可以通過它的文檔查看到所有可用的關(guān)鍵詞的列表。
庫關(guān)鍵詞
所有最底層的關(guān)鍵詞都是在測試庫中定義的,它們通過使用標(biāo)準(zhǔn)編程語言實(shí)現(xiàn)。?Robot Framework本身具有部分庫,包括用于支持常見的操作系統(tǒng)函數(shù)的OperatingSystem?庫,和用于捕捉屏幕焦點(diǎn)的Screenshot?庫。在這些標(biāo)準(zhǔn)庫之外,還有其他的庫分布在不同的開源項(xiàng)目中,例如SeleniumLibrary?用于?Web?測試。當(dāng) 沒有合適的庫可用時實(shí)現(xiàn)自己的庫implement your own libraries也是很容易的。
想要使用一個測試庫提供的關(guān)鍵詞,這個庫必須被啟用。本文件中的測試需要從標(biāo)準(zhǔn)OperatingSystem?庫?(例如,Remove File)和用戶自定義LoginLibrary庫(例如Attempt to login with credentials)中定義的關(guān)鍵詞。這兩個庫都是使用下面叫做setting?表的表格導(dǎo)入。
| Setting | Value |
| Library | OperatingSystem |
| Library | testlibs/LoginLibrary.py |
| Meta: Version | 1.0 |
用戶定義關(guān)鍵詞
Robot Framework?最有用的特性之一就是很容易的從其他關(guān)鍵詞中創(chuàng)建新的高級別關(guān)鍵詞。創(chuàng)建用戶定義關(guān)鍵詞,簡稱用戶關(guān)鍵詞,的語法和創(chuàng)建測試用例的語法很相似。前面測試用例用到的所有高級別關(guān)鍵詞都是在下面keyword?表中定義的。
?
| Keyword | Action | Argument | Argument |
| Clear login database | Remove file | ${DATABASE FILE} | ? |
| ? | ? | ? | ? |
| Create valid user | [Arguments] | ${username} | ${password} |
| ? | Create user | ${username} | ${password} |
| ? | Status should be | SUCCESS | ? |
| ? | ? | ? | ? |
| Creating user with invalid password should fail | [Arguments] | ${password} | ${error} |
| ? | Create user | example | ${password} |
| ? | Status should be | Creating user failed: ${error} | ? |
| ? | ? | ? | ? |
| Login | [Arguments] | ${username} | ${password} |
| ? | Attempt to login with credentials | ${username} | ${password} |
| ? | Status should be | Logged In | ? |
| ? | ? | ? | ? |
| # Used by BDD test cases (this is a comment) | ? | ? | ? |
| Given a user has a valid account | Create valid user | ${USERNAME} | ${PASSWORD} |
| When she changes her password | Change password | ${USERNAME} | ${PASSWORD} |
| ? | ... | ${NEW PASSWORD} | ? |
| ? | Status should be | SUCCESS | ? |
| Then she can log in with the new password | Login | ${USERNAME} | ${NEW PASSWORD} |
| And she cannot use the old password anymore | Attempt to login with credentials | ${USERNAME} | ${PASSWORD} |
| ? | Status should be | Access Denied | ? |
用戶定一個經(jīng)常可以包含從其他用戶定義關(guān)鍵詞,內(nèi)置關(guān)鍵詞或者庫關(guān)鍵詞定義的動作。如在本例中所示,用戶定義關(guān)鍵詞可以攜帶參數(shù)。它們可以返回值設(shè)置包括FOR循環(huán)?,F(xiàn)在重要的是用戶定義關(guān)鍵詞使測試創(chuàng)建者能夠?yàn)槌S玫膭幼餍蛄袆?chuàng)建可重用的步驟。用戶定義關(guān)鍵詞還可以幫助測試作者在不同的環(huán)境下盡可能保持測試測試可讀性和使用恰當(dāng)?shù)某橄蠹墑e。
變量
定義變量
變量是Robot Framework?的組成部分。通常在測試中的可能變化的數(shù)據(jù)最好定義為變量。定義變量的語法非常簡單,如下表所示:
| Variable | Value |
| ${USERNAME} | janedoe |
| ${PASSWORD} | J4n3D0e |
| ${NEW PASSWORD} | e0D3n4J |
| ? | ? |
| ${DATABASE FILE} | ${TEMPDIR}${/}robotframework-quickstart-db.txt |
| ? | ? |
| ${PWD INVALID LENGTH} | Password must be 7-12 characters long |
| ${PWD INVALID CONTENT} | Password must be a combination of lowercase and uppercase letters and numbers |
變量也可以從命令行給定,以便于測試需要在不同的環(huán)境中執(zhí)行。例如本demo可以像下面一樣執(zhí)行:
pybot --variable USERNAME:johndoe --variable PASSWORD:J0hnD0e quickstart.html
除了用戶定義變量之外,還有一些內(nèi)置變量也很有用。這些變量包括在上表中使用的${TEMPDIR}?和${/}?。
使用變量
變量可以在測試數(shù)據(jù)的大部分地方使用。如下面的測試用例所示它們最常用作關(guān)鍵詞的參數(shù)。關(guān)鍵詞的返回值也可以復(fù)制給變量以便在后面使用。例如下面的Database Should Contain?用戶關(guān)鍵詞設(shè)置數(shù)據(jù)庫內(nèi)容給${database}?變量,然后使用內(nèi)置關(guān)鍵詞Should Contain??驗(yàn)證內(nèi)容。庫和用戶定義關(guān)鍵詞口可以返回值。
| Test Case | Action | Argument | Argument | Argument |
| User status is stored in database | [Tags] | variables | database | ? |
| ? | Create Valid User | ${USERNAME} | ${PASSWORD} | ? |
| ? | Database Should Contain | ${USERNAME} | ${PASSWORD} | Inactive |
| ? | Login | ${USERNAME} | ${PASSWORD} | ? |
| ? | Database Should Contain | ${USERNAME} | ${PASSWORD} | Active |
?
| Keyword | Action | Argument | Argument | Argument |
| Database Should Contain | [Arguments] | ${username} | ${password} | ${status} |
| ? | ${database} = | Get File | ${DATABASE FILE} | ? |
| ? | Should Contain | ${database} | ${username}/t${password}/t${status} | ? |
組織測試用例
測試套件
在Robot Framework中測試用例的集合叫做測試套件。每個包含測試用例的輸入文件組成一個測試套件。當(dāng)運(yùn)行本demo時,可以在控制臺輸出上看見測試套件Quickstart?。這個名字來自于文件名并且在報告和日志都可見。
可以通過將測試用例文件放置在目錄中并將這些目錄放在其他目錄中來組織測試用例的層次。所有這些目錄自動創(chuàng)建以目錄名命名的高層次測試套件。因?yàn)闇y試套件知識文件和目錄,它們很容易放置到任何版本管理系統(tǒng)中。
你可以通過在本指南的目錄下運(yùn)行如下命令來測試運(yùn)行一個目錄作為一個測試套件:
pybot .
啟動和卸載
如果你希望讓一系列動作在每個測試執(zhí)行之前或之后發(fā)生,使用Test Setup?和?Test Teardown?設(shè)置如下:
| Setting | Value |
| Test Setup | Clear Login Database |
| Test Teardown | ? |
同樣你也可以使用Suite Setup?和?Suite Teardown?設(shè)置來指定在整個測試套件執(zhí)行之前和之后執(zhí)行的動作。
使用標(biāo)簽
Robot Framework?允許為測試用例設(shè)置標(biāo)簽以便給他們自由的元數(shù)據(jù)。allows setting tags for test cases to give them free metadata.?標(biāo)簽可以使用如下表中Default Tags?和?Force Tags??settings為一個文件中的所有測試用例設(shè)置。也可以像前面User status is stored in database?測試中那樣為單獨(dú)的測試用例設(shè)置標(biāo)簽。
| Setting | Value | Value |
| Force Tags | quickstart | ? |
| Default Tags | example | smoke |
當(dāng)你在一個測試執(zhí)行后查看報告時,可以發(fā)現(xiàn)測試與標(biāo)簽相關(guān)聯(lián)并且按照標(biāo)簽同級生成。標(biāo)簽還可用于很多其他目的,其中一個很重要的就是用于選擇想要執(zhí)行什么測試。你可以嘗試下面的命令:
pybot --include smoke quickstart.html
pybot --exclude database quickstart.html
創(chuàng)建測試庫
Robot Framework?為創(chuàng)建測試庫提供了一個簡單的API,包括Python?和?Java。?user guide包括有具有例子的詳細(xì)說明。
下面是本文中LoginLibrary?的源碼??梢钥吹疥P(guān)鍵詞Create User?是如何映射到方法create_user?的實(shí)際實(shí)現(xiàn)。
import?os
import?sys
?
?
class?LoginLibrary:
?
????def?__init__(self):
????????self._sut_path?=?os.path.join(os.path.dirname(__file__),
??????????????????????????????????????'..',?'sut',?'login.py')
????????self._status?=?''
?
????def?create_user(self, username, password):
????????self._run_command('create', username, password)
?
????def?change_password(self, username, old_pwd, new_pwd):
????????self._run_command('change-password', username, old_pwd, new_pwd)
?
????def?attempt_to_login_with_credentials(self, username, password):
????????self._run_command('login', username, password)
?
????def?status_should_be(self, expected_status):
????????if?expected_status?!=?self._status:
????????????raise?AssertionError("Expected status to be '%s' but was '%s'"
??????????????????????????????????%?(expected_status,?self._status))
?
????def?_run_command(self, command,?*args):
????????command?=?'"%s"?%s?%s'?%?(self._sut_path, command,?' '.join(args))
????????process?=?os.popen(command)
????????self._status?=?process.read().strip()
????????process.close()
?
自動化測試資訊平臺 http://www.AutomationQA.com 本文轉(zhuǎn)自:http://www.cnblogs.com/testware/archive/2011/10/31/2230236.html轉(zhuǎn)載于:https://www.cnblogs.com/tianyaxue/p/3420947.html
總結(jié)
以上是生活随笔為你收集整理的【转】Robot Framework 快速入门的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 总结sqlserver数据库性能优化相关
- 下一篇: fckeditor 数据库 取值 显示