剛接手項目的時候,要求所有流程在上線之前必須確保正向操作是正確的;這個時候又有新的模塊需要測試,所以引入自動化測試是非常有必要的!通過對比,嘗試使用RF進行自動化的回歸測試。
測試中最常見的操作就是增刪改查,所以對於自動化最簡單的就是數據模塊的增刪改查人手進行操作。
這里先看一下web測試中的新增用例的測試點,如圖所示
對於一個新增操作,我們這里以賬號新增為例進行操作展示,賬號新增頁面元素顯示如圖所示
先說明一下,各個元素的定位方法:
輸入用戶名
[Arguments] ${username}
Wait Until Element Is Visible id=username
clear element text id=username
input text id=username ${username} #賬號管理中的用戶名和密碼共用
輸入密碼
[Arguments] ${password}
Wait Until Element Is Visible id=password
input text id=password ${password} #賬號管理中的用戶名和密碼共用
再次輸入密碼
input text id = ppassword ${ppassword}
手機號碼
[Arguments] ${phone}
clear element text id = phone
sleep 5
input text id = phone ${phone} #用戶信息共用此定位,賬號信息中也共用
郵箱
[Arguments] ${email}
clear element text id=email
input text id=email ${email}
選擇用戶組
click element xpath = .//*[@id='unTbl']/tbody/tr[1]/td[1]/i
用戶所屬機構
[Arguments] ${organization_id}
Comment select from list id = organization_id 機構養老一 #賬號中的所屬機構共用此定位
#隨機選擇所屬機構
${count} get matching xpath count .//*[@id='organization_id']/option
${sale_pattern_temp} evaluate random.randint(0,${count}-1) random
${sale_pattern} Convert To String ${sale_pattern_temp}
select from list by index organization_id ${sale_pattern}
數據權限
#賬號新增中的全選按鈕
click element xpath = .//*[@id='orgs']/li/input
賬號保存
click button xpath = html/body/div[1]/div/div[2]/form/div[10]/div/button[1]
Comment click button xpath = html/body/div[1]/div/div[2]/form/div[10]/div/button[1]
sleep 10
賬號名稱檢查
${account} get text xpath=.//*[@id='tb_guardian']/tbody/tr[1]/td[2]
[Return] ${account}
而新增賬號頁面中元素的定位已經確定,接下來就是用例步驟:
用例目的:新建賬號-成功
步驟:
- 使用管理賬號登錄系統
- 打開新建賬號的頁面,此處需要使用select window來切換tab到新建賬號的頁面
- 輸入符合的用戶名、密碼、確認密碼、手機號碼、郵箱、選擇用戶組、用戶所屬機構和全部數據權限
- 點擊保存
斷言:
- 當前頁面的url是否是query的頁面
- 當前顯示的首行賬號名稱是否和新增的賬號名稱一致
接下來就是使用RF進行用例的編寫~(≧▽≦)/~
根據用例步驟一步步來編寫用例,這里將登錄和關閉瀏覽器2個操作封裝之后,分別在setup和teardown中進行設置了,如圖所示
賬號添加用例代碼展示如圖
[Documentation] 用例目的:新建賬號-成功
... 步驟:
... 1.打開新建賬號的頁面,此處需要使用select window來切換tab到新建賬號的頁面
... 2.輸入符合的用戶名、密碼、確認密碼、手機號碼、郵箱、選擇用戶組、用戶所屬機構和全部數據權限
... 3.點擊保存
... 斷言
... 1.當前頁面的url是否是query的頁面
... 2.當前顯示的首行賬號名稱是否和新增的賬號名稱一致
[Setup] login
打開頁面 ${GuardianEdit}
Take Screenshot guardian
賬號跳轉
Take Screenshot guardian
${username}= gen chars 10
輸入用戶名 ${username}
輸入密碼 123456
再次輸入密碼 123456
${phone} Evaluate random.choice(['139','188','185','136','158','151'])+"".join(random.choice("0123456789") for i in range(8)) random
手機號碼 ${phone}
郵箱 5645645645656@qq.com
選擇用戶組
用戶所屬機構 機構養老一
數據權限
Take Screenshot guardian
賬號保存
sleep 10
#確認顯示信息
角色確認
sleep 10
Take Screenshot guardian
Comment ${mes}= Confirm Action
Comment sleep 10
Comment Should Be Equal As Strings ${mes} 保存成功!
Comment 確認保存
Comment ${Auser} get text xpath=.//*[@id='tb_guardian']/tbody/tr[1]/td[2] #后期po
#斷言當前頁面的url
Location Should Be ${GuardianQuery}
${Auser} 賬號名稱檢查
Should Match ${Auser} ${username}
log ${username}
log ${Auser}
[Teardown] close
代碼截圖如圖所示
這樣新增賬號成功用例已經完成。而根據web測試點,其他用例設計如圖所示
這里整個結構使用了RobotFramework的分層思想:
第一層即用例層,如上圖所示
第二層是頁面元素封裝,如圖所示
第三層是元素值的變量集合,如圖所示
到此,賬號新增模塊的整個用例設計已經完成(^o^)/~