Otomasyon, Teknoloji
Robot Framework Custom Library Nasıl Yazılır?
Robot Framework ve Custom Library
Aslında robotframework bir çok harici ve dahili kütüphane desteğini hali hazırda sağlıyor.
BuiltIn, Collections, Screenshot, XML gibi kullanılşlı dahili kütüphaneleri ya da Appium, Selenium, Database, FTP, Faker gibi onlarca ve çok kullanışlı kütüphaneleri mevcut.
Ancak yine de bunların bile yetmediği durumlar oluşabiliyor. Bu durumda Python ile kendi kütüphanelerimizi (Custom Library) oluşturabiliyoruz.
Benim kendi işim için yapmış olduğum basit bir projem var. Bu proje sistemde tanımlı olan onlarca mevcut kullanıcının saklandığı yerden isim ve password bilgisini alıyor ve 5 farklı ortamda kullanıcı ismi ve şifresi ile giriş yapmayı ve kullanıcı veya şifresi hatalı olanları bir dosyaya yazdırıyor.
Dosyaya yazdırma kısmı için bir python function (custom library) yazdım.
Öncelikle ilk test case’de Kullanıcı bilgilerini gidip kaynak sayfasından alacak ve istediğimiz sunucu için sayfayı açıp login olmayı deneyecek.
Test Cases:
*** Settings ***
Resource ../Facilities/CsrUsersValidationApp.robot
Resource ../Facilities/Test1Enviroment.robot
Resource ../Facilities/Test2Enviroment.robot
Resource ../Facilities/WikiPageFacilities.robot
Resource ../Facilities/Common.robot
Resource ../Resources/WikiVariables.robot
Resource ../Resources/Test1Variables.robot
Test Setup Begin Web Test
Test Teardown End Web Test
#Test Teardown When Test Fail Take Screenshot
# robot -d Results Tests/CsrUsersValidation.robot
*** Test Cases ***
Read And Validate CSR Users For Test1
Go And See All CSR Users On Wiki Page
Get User And Log In For All CSR Users For Test 1
Eğer login işlemi fail olursa aşağıdaki path’e fail olan kullanıcının bilgilerini yazacak.
C:\CsrUsers\FailedCsrUsers
*** Settings *** Library Selenium2Library Library PythonFunctions2.py Resource ../Facilities/Test1Enviroment.robot Resource ../Facilities/WikiPageFacilities.robot Resource ../Facilities/WikiLoginFacilities.robot Resource ../Resources/Test1Variables.robot
*** Keywords *** Admin01 On Test 1
[Arguments]
${UserName} = Get Text ${Admin01Path}
${Password} = Get Text ${Admin01PasswordPath} Execute Javascript window.open()
Switch Window NEW
Go To ${Test1_URL}
Wait Until Page Contains ${ValidateTest1Loaded} ${TimeOut}
Input Text ${InputUserName} ${UserName} Input Text ${InputPassword} ${Password} Click Element ${Test1Login} Sleep 3s
${status} ${value}= Run Keyword And Ignore Error Element Should Be Visible ${ChainIcon}
Run Keyword If '${status}' == 'PASS' HamburgerMenuOpen
... ELSE csv_append_userFail ${UserName} C:\\CsrUsers\\FailedCsrUsers.csv
PythonFunctions2.py dosyamızın içi ise aşağıdaki gibi.
import csv
def csv_append_userFail(UserName, location):
# Append CSV For User Function
fields = [UserName]
with open(location, 'a', newline='') as f:
writer = csv.writer(f)
writer.writerow(fields)
Eğer aşağıdaki koşul sağlanırsa HamburgerMenuOpen senaryosuna devam edilecek, ancak sağlanmazsa Custom Library’ye yazdığım csv_append_userFail senaryosuna gidecek ve bu
library’deki ilgili def’i çağıracak.
Run Keyword If '${status}' == 'PASS' HamburgerMenuOpen
... ELSE csv_append_userFail ${UserName} C:\\CsrUsers\\FailedCsrUsers.csv
Etiketler: custom library, Robot Framework, robot framework custom library, robot framework python function