Программный доступ к настройкам "--skip-group" для условного поведения в тестах Cest - PullRequest
0 голосов
/ 13 февраля 2019

Я хочу запустить тест Codeception CEST в разных средах / этапах с разными утверждениями в зависимости от параметра «--skip-group», поскольку существуют также полные тесты, которые пропускаются на основе этого параметра:

  • в непроизводственной среде / стадии (тесты выполняются без каких-либо настроек "--skip-group"). Я хочу использовать seeInDatabase для очень оборонительных / строгих утверждений
  • такой доступ к БДне допускается по соображениям безопасности в производственной среде (тесты выполняются с параметром --skip-group)

Я пытался:

  • На основепри http://phptest.club/t/condition-in-my-function-for-skip-group-onlyondev/858/2:

    • но этот «вспомогательный» подход не удался, потому что $this->options, по-видимому, недоступен (Codeception 2.5.1);но, возможно, я допустил какую-то ошибку?
  • Наивное исследование кода Codeception, например \Codeception\Scenario, казалось, не решило мою проблему

Это мои теперь дублированные тесты, которые я хочу заменить одним тестом с условным вызовом seeFormSubmissionInDatabase (см. «//! ЗДЕСЬ»)

  /**
   * @param Front\Forms\ContactForm\PageObject $contactFormPage
   * @group nonProductionTest
   */
  public function submitContactFormSuccessful(Front\Forms\ContactForm\PageObject $contactFormPage) {
    $firstName = 'User' . uniqid();
    $contactFormPage->openPage();
    $contactFormPage->fillFormWithValidData($firstName);
    $contactFormPage->fillFormWithPrivacyAcceptance();
    $contactFormPage->submitForm();
    $contactFormPage->seeValidFormSubmission();
    // TODO: instead of "@group nonProductionTest" for test and duplication submitContactFormSuccessfulWithoutDb()
    // if not group skip nonProductionTest then also check
    $contactFormPage->seeFormSubmissionInDatabase($firstName); // ! HERE
  }

  /**
   * TODO: Duplication of submitContactFormSuccessful() test above
   * @param Front\Forms\ContactForm\PageObject $contactFormPage
   */
  public function submitContactFormSuccessfulWithoutDb(Front\Forms\ContactForm\PageObject $contactFormPage) {
    $firstName = 'User' . uniqid();
    $contactFormPage->openPage();
    $contactFormPage->fillFormWithValidData($firstName);
    $contactFormPage->fillFormWithPrivacyAcceptance();
    $contactFormPage->submitForm();
    $contactFormPage->seeValidFormSubmission();
  }
...