Использование различных сред кодирования

Я работаю над некоторыми модульными тестами для API, используя Codeception. Идея состоит в том, чтобы убедиться, что каждый вызов API возвращает ожидаемые коды ответов и объект JSON в нужном формате.

У меня проблема в том, что мне нужно использовать разные URL-адреса в зависимости от того, является ли сервер localhost, тестовым сервером или рабочим.

Я не могу использовать значения $_SERVER['SERVER_NAME'], потому что тесты не выполняются через веб-браузер.

Здесь http://codeception.com/docs/07-AdvancedUsage#Environments объясняется, что некоторые среды могут быть установлены путем изменения файла конфигурации. В документации не объясняется, как изменить файл конфигурации, чтобы использовать его в собственных модульных тестах.

Я хотел бы установить некоторые среды, такие как local, test, production, а затем, внутри моих классов модульного тестирования, узнать, что URLs использовать. Каждая среда будет иметь разные URL-адреса.

Я прочитал документацию, но я не могу найти способ сделать это.

Знаете ли вы какой-либо способ добиться того, что мне нужно?


person woodgate    schedule 25.02.2014    source источник
comment
Согласитесь, в документации неясно, является ли конфигурация среды специфичной для пакета, хотя, поскольку вложенные конфигурации объединены с родительской конфигурацией (codeception.yml), должна быть возможность настраивать среды в родительской конфигурации. также.   -  person Motin    schedule 15.04.2014
comment
Вот учебник, который я сделал для этого: wp-bdd.com/multiple-environments . Среды могут быть любыми, разные браузеры, разные версии, разные данные и т.д.   -  person John Dee    schedule 14.03.2018


Ответы (1)


Убедитесь, что ваша версия кода не ниже 1.8, так как среда поддерживается только с версии 1.8.

Ниже приведена наша настройка для кодирования, указанная в api.suite.yml, с модулями PhpBrowser и REST, включенными для тестирования BDD и API:

...
env:
    local:
        modules:
            config:
                PhpBrowser:
                    url: http://local.example.com/
                REST:
                    url: http://local.example.com/v1/
    integration:
        modules:
            config:
                PhpBrowser:
                    url: http://integration.example.com/
                REST:
                    url: http://integration.example.com/v1/
    staging:
        modules:
            config:
                PhpBrowser:
                    url: http://staging.example.com/
                REST:
                    url: http://staging.example.com/v1/

При запуске команды codecept вам необходимо указать параметр --env, чтобы указать, какую среду должны использовать тесты.

person hidro    schedule 25.02.2014
comment
просто для ясности, это идет ПОСЛЕ всего дерева, начиная с модулей:... enabled:... config... - person dwenaus; 28.05.2014
comment
Можно ли протестировать несколько сред в одном тесте? - person AlxVallejo; 19.07.2016
comment
@AlxVallejo, да, добавьте дополнительные аргументы --env, например: codecept run testSuiteName --env local --env integration --env staging. Но если вы хотите конкретный тест, из тестового примера. Затем: codecept run pathToTestFileWithExtension.php:testMethodName --env local --env integration --env staging - person juslintek; 10.01.2020