2016-09-15 5 views
3

로봇 테스트를 실행할 gradle 작업을 설정하려고합니다. Robot은 Python 라이브러리를 사용하여 브라우저를 통해 웹 페이지를 테스트하기 위해 Selenium과 상호 작용합니다. 그러나 유감스럽게도 https://github.com/robotframework/Selenium2Library을 설치하는 유일한 방법은 pip - pip install robotframework-selenium2library입니다. Gradle이 내 작업에서이 명령을 실행하도록 할 수있는 방법이 있습니까? 여기 Maven Central에없는 라이브러리에 python pip install을 사용하기 위해 gradle 테스트 작업을 어떻게 얻을 수 있습니까?

내가 가진 무엇 :

build.gradle :

configurations { 
    //... 
    acceptanceTestRuntime {extendsFrom testCompile, runtime} 
} 
dependencies { 
    //... 
    acceptanceTestRuntime group: 'org.robotframework', name: 'robotframework', version: '2.8.7' 
    //The following doesn't work, apparently this library isn't on maven... 
    //acceptanceTestRuntime group: 'org.robotframework', name: 'Selenium2Library', version: '1.+' 
} 
sourceSets { 
    //... 
    acceptanceTest { 
     runtimeClasspath = sourceSets.test.output + configurations.acceptanceTestRuntime 
    } 
} 
task acceptanceTest(type: JavaExec) { 
    classpath = sourceSets.acceptanceTest.runtimeClasspath 
    main = 'org.robotframework.RobotFramework' 
    args '--variable', 'BROWSER:gc' 
    args '--outputdir', 'target' 
    args 'src/testAcceptance' 
} 

내 로봇 리소스 파일 - login.resource.robot :

*** Settings *** 
Documentation A resource file for my example login page test. 
Library   Selenium2Library 

*** Variables *** 
${SERVER}   localhost:8080 
(etc.) 

*** Keywords *** 
Open Browser to Login Page 
    Open Browser ${LOGIN_URL} ${BROWSER} 
    Maximize Browser Window 
    Set Selenium Speed ${DELAY} 
    Login Page Should Be Open 

Login Page Should Be Open 
    Location Should Be  ${LOGIN_URL} 

그리고 나는이 작업을 실행할 때, 내 로봇 테스트가 실행되지만 실패합니다. robotframework-selenium2Library에 정의 된 특정 키워드는 "브라우저 열기"와 같이 인식되지 않으므로 예외가 발생합니다.

이 작업을 위해이 셀렌 라이브러리를 가져 오기 위해 gradle을 어떻게 얻을 수 있습니까? Python 플러그인을 통해 pip를 설치하고 호출 할 수 있습니까?

답변

0

나는 로봇 테스트를 시작한 파이썬 스크립트를 실행하기 위해 gradle Exec 태스크를 사용해야했습니다. 그래서이처럼 보였다 :

build.gradle

task acceptanceTest(type: Exec) { 
    workingDir 'src/testAcceptance' 
    commandLine 'python', 'run.py' 
} 

SRC/testAcceptance/run.py

import os 
import robot 
import setup 
#Which runs setup.py 

os.environ['ROBOT_OPTIONS'] = '--variable BROWSER.gc --outputdir results' 
robot.run('.') 

SRC/testAcceptance/setup.py

import os 
import sys 
import pip 
import re 

pip.main(['install', 'robotframework==3.0']) 
pip.main(['install', 'robotframework-selenium2library==1.8.0']) 
# Checksums can be looked up by chromedriver version here - http://chromedriver.storage.googleapis.com/index.html 
pip.main(['install', '--upgrade', 'chromedriver_installer', 
    '--install-option=--chromedriver-version=2.24', 
    '--install-option=--chromedriver-checksums=1a46c83926f891d502427df10b4646b9,d117b66fac514344eaf80691ae9a4687,' + 
    'c56e41bdc769ad2c31225b8495fc1a93,8e6b6d358f1b919a0d1369f90d61e1a4']) 

#Add the Scripts dir to the path, since that's where the chromedriver is installed 
scriptsDir = re.sub('[A-Za-z0-9\\.]+$', '', sys.executable) + 'Scripts' 
os.environ['PATH'] += os.pathsep + scriptsDir