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

 

 

Python Fonksiyonu Resources klasörünün içinde ve robot dosyasında bunu resource olarak belirtmeniz gerekiyor.

 

Sağdaki resmi büyütmek için üzerine tıklayın.

 

 

 

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

 

 

robotframework Custom library

Author


Baris