Eu tenho um arquivo de recurso de caratê conforme abaixo -
Feature: Feature file
@env=dev
Scenario: runs only when karate.env is 'dev'
* print 'karate.env is:', env
@envnot=perf,prod
Scenario: never runs in perf or prod
* print 'karate.env is:', env
E definindo o valor env em karate-config.js como abaixo -
var env = karate.env; // get system property 'karate.env'
karate.log('karate.env system property was:', env);
if (!env) {
env = 'dev';
}
karate.log('karate.env system property was:', env);
Mas ao executar a partir do arquivo de recursos ou do runner, karate.env é considerado nulo, a menos que executemos por meio da linha de comando.
09:15:22.988 [main] INFO com.intuit.karate - karate.env system property was: null
09:15:22.988 [main] INFO com.intuit.karate - karate.env system property was: dev
09:15:23.019 [main] INFO com.intuit.karate - [print] karate.env is: dev
Mas executando a partir da linha de comando (mvn test "-Dkarate.env=dev") funciona -
09:16:55.118 karate.env system property was: dev
09:16:55.133 karate.env system property was: dev
09:16:55.165 [print] karate.env is: dev
Os cenários não deveriam ser escolhidos com base no valor env em vez de "karate.env"?
Isso ocorre intencionalmente. Você não pode modificar
karate.env
depois de iniciar seu conjunto de testes.O exemplo que você usou
karate-config.js
é apenas uma conveniência para definir uma variável local chamadaenv
que pode ser usada dentro do bloco JS. Não vive alémkarate-config.js
.