5

ロボット テストを実行する gradle タスクを設定しようとしています。ロボットは、Python ライブラリを使用して Selenium と対話し、ブラウザーを介して Web ページをテストします。しかし残念ながら、https://github.com/robotframework/Selenium2Libraryをインストールする唯一の方法は pip - 経由pip install robotframework-selenium2libraryです。私のタスクで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 で定義されている特定のキーワード (「Open Browser」など) が認識されず、例外がスローされるためです。

このタスクのためにこのセレンライブラリをインポートするようにgradleを取得するにはどうすればよいですか? Pythonプラグインを介してpipをインストールして呼び出すことはできますか?

4

1 に答える 1

1

gradle Exec タスクを使用して、ロボット テストを開始する Python スクリプトを実行する必要がありました。したがって、次のようになりました。

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
于 2016-09-23T13:24:40.540 に答える