2016-11-15 3 views
1
laufen
I have acceptance.suite.yml which looks like this. 

class_name: AcceptanceTester 
modules: 
    enabled: 
     - \Helper\Acceptance 
     - WebDriver: 
      url: https://staging.needhelp.com     
env: 
    firefox: 
     modules: 
      config: 
       qa_user: [email protected] 
       WebDriver: 
        browser: 'firefox' 
        capabilities: 
         platform: Windows 7 

    chrome: 
     modules: 
      config: 
       qa_user: [email protected] 
       WebDriver: 
        browser: 'chrome' 
        capabilities: 
         platform: Windows 8.1 

Und ich führen Sie den Testfall, wie so:Codeception Umgebung erhalten, auf denen Tests

$ codecept run acceptance UserCest.php --env firefox --env chrome 

Nun, ich habe mich gefragt, ob es einen Weg env im Test zu bekommen, ist selbst während der Laufzeit.

class UserCest extends BaseAcceptance 
{ 



    public function login(AcceptanceTester $I) 
    { 
     $I->amOnPage("/"); 
     $I->see('Sign In'); 
     $env = $I->getConfig('env'); 
//something like this ?? which would return 'firefox' for the instance it is running as environment firefox. 

     $I->fillField($this->usernameField, $this->username); 
     $I->fillField($this->passwordField, $this->password); 
    } 

Antwort

0

Sie sollten in der Lage sein, diese Informationen für den Zugriff auf über scenario. Wie es in der docs heißt:

Sie können \ Codeception \ Scenario in Cept und Cest-Formate zugreifen. In Cept ist die $ -Szenariovariable standardmäßig verfügbar, während Sie in Cests durch die Abhängigkeitsinjektion erhalten werden sollten.

Also in Ihrem Fall sollte es in etwa so aussehen:

public function login(AcceptanceTester $I, \Codeception\Scenario $scenario) 
{ 
    $I->amOnPage("/"); 
    $I->see('Sign In'); 

    if ($scenario->current('browser') == 'firefox') { 
     //code to handle firefox 
    } 

    $I->fillField($this->usernameField, $this->username); 
    $I->fillField($this->passwordField, $this->password); 
} 
Verwandte Themen