AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / coding / 问题

Perguntas[karate](coding)

Martin Hope
Mark Hughes
Asked: 2025-01-17 20:53:11 +0800 CST

Simulação de Karate Gatling: Erro Java 21 "Nenhuma simulação para executar"

  • 6

Estou integrando o Karate com o Gatling para testes de desempenho. No entanto, quando executo minha simulação usando o Maven, encontro o seguinte erro:

[ERRO] Nenhuma simulação para executar [INFO] FALHA DE CONSTRUÇÃO Estrutura do projeto: Esta é a estrutura do meu projeto:

karate/
├── src/
│   ├── test/
│   │   ├── java/
│   │   │   ├── resources/
│   │   │   │   ├── performance/
│   │   │   │   │   ├── PerfTest.scala
│   │   │   │   │   ├── demoTest.feature

Configuração Maven: Aqui está a seção relevante do meu pom.xml:

 
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>21</java.version>
        <maven.compiler.version>3.8.1</maven.compiler.version>
        <maven.surefire.version>2.22.2</maven.surefire.version>
        <karate.version>1.4.1</karate.version>
        <gatling.plugin.version>4.12.2</gatling.plugin.version>
    </properties> 

    <dependencies>         
        <dependency>
            <groupId>com.intuit.karate</groupId>
            <artifactId>karate-junit5</artifactId>
            <version>${karate.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>net.masterthought</groupId>
            <artifactId>cucumber-reporting</artifactId>
            <version>5.7.5</version>
        </dependency>
        <dependency>
            <groupId>com.intuit.karate</groupId>
            <artifactId>karate-gatling</artifactId>
            <version>${karate.version}</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
    
        <testResources>
            <testResource>
                <directory>src/test/java</directory>
                <excludes>
                    <exclude>**/*.java</exclude>
                </excludes>
            </testResource>
        </testResources>
        <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>${maven.compiler.version}</version>
                <configuration>
                    <encoding>UTF-8</encoding>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                    <compilerArgument>-Werror</compilerArgument>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>${maven.surefire.version}</version>
                <configuration>
                    <argLine>-Dfile.encoding=UTF-8</argLine>
                </configuration>
            </plugin>

            <plugin>
                <groupId>io.gatling</groupId>
                <artifactId>gatling-maven-plugin</artifactId>
                <version>${gatling.plugin.version}</version>
                <configuration>
<simulationsFolder>src/test/java/resources/performance</simulationsFolder>
                </configuration>
            </plugin>

            <plugin>
                <groupId>net.alchim31.maven</groupId>
                <artifactId>scala-maven-plugin</artifactId>
                <version>4.9.2</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>testCompile</goal>
                        </goals>
                        <configuration>
                            <args>
                                <arg>-Jbackend:GenBCode</arg>
                                <arg>-Jdelambdafy:method</arg>
                                <arg>-target:jvm-21</arg>
                                <arg>-deprecation</arg>
                                <arg>-feature</arg>
                                <arg>-unchecked</arg>
                                <arg>-language:implicitConversions</arg>
                                <arg>-language:postfixOps</arg>
                            </args>
                        </configuration>
                    </execution>
                </executions>
            </plugin> 
        </plugins>   
       </pluginManagement>
    </build>       
</project>

Arquivo de simulação Scala: Aqui está meu arquivo PerfTest.scala:

package performance

import com.intuit.karate.gatling.PreDef._
import io.gatling.core.Predef._
import scala.concurrent.duration._

class PerfTest extends Simulation {

  val protocol = karateProtocol().runner.karateEnv("perf")

  val create = scenario("demo").exec(karateFeature("classpath:resources/performance/demoTest.feature"))

  setUp(
    create.inject(rampUsers(10) during (5 seconds)).protocols(protocol)
  )
}

Comando usado:

mvn clean test-compile gatling:test
karate
  • 1 respostas
  • 26 Views
Martin Hope
Depstan Xavier
Asked: 2024-11-13 09:45:53 +0800 CST

a correspondência está falhando na validação da substring quando passamos a substring como uma variável

  • 6

Minha carga útil tem uma tag de dados cujo valor estou definindo como 'teste'.

   * set test.input.data = 'test'
   * def listData = ["testcoding", "testcoding", "testcoding"]
   * match each listData contains '#(test.input.data)'

Quando eu faço a correspondência, ela falha com o seguinte erro -

   $ | match each failed at index 0 (LIST:STRING)
     ["testcoding", "testcoding", "testcoding"]
     '#(test.input.data)'
   $ [0] | not equal (STRING:STRING)
     'testcoding'
     'test'

mas quando passo o valor diretamente para a instrução match ele passou na validação -

    * set test.input.data = 'test'
    * def listData = ["testcoding", "testcoding", "testcoding"]
    * match each listData contains 'test'

Esse é o comportamento esperado?? Por que a validação falhou quando passamos a substring como uma variável na condição de correspondência? Há algo errado que estou fazendo?

Agradeço qualquer ajuda. Por favor, sinta-se à vontade para me avisar se precisar de mais detalhes sobre o erro.

PS - Se test.input.datanão for uma substring, ele retornará pass sem problemas.

exemplo :-

    * set test.input.data = 'testcoding'
    * def listData = ["testcoding", "testcoding", "testcoding"]
    * match each listData contains '#(test.input.data)'

Resultado - aprovado/sucesso

karate
  • 1 respostas
  • 23 Views
Martin Hope
Deepak Rai
Asked: 2024-11-01 10:49:17 +0800 CST

O arquivo Karate.log não é gerado ao usar o Karate 1.5

  • 6

Tenho o arquivo logback-test.xml abaixo colocado na pasta src/test/resources.

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

<!-- <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
   <encoder>
       <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
   </encoder>
</appender> -->

<appender name="FILE" class="ch.qos.logback.core.FileAppender">
    <file>target/karate.log</file>
    <encoder>
        <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
</appender>

<logger name="com.intuit.karate" level="DEBUG"/>
<logger name="demo" level="INFO"/>
<logger name="mock" level="INFO"/>

<root level="warn">
  <!-- <appender-ref ref="STDOUT" /> -->
    <appender-ref ref="FILE" />
</root>

</configuration>

Estava funcionando bem até 1.4.1. Quando mudei para 1.5, ele parou de gerar os logs.

karate
  • 1 respostas
  • 18 Views
Martin Hope
j8d
Asked: 2024-10-03 02:58:52 +0800 CST

tente novamente até com matrizes de resposta

  • 6

Espero que alguém possa me dizer o que estou fazendo errado aqui. Vejo o valor para foo na resposta a cada nova tentativa. Estranhamente, de vez em quando, ele passa. Não há problemas se eu remover a nova tentativa até e avaliá-la depois de fazer a chamada.

* def bar = "baz"

* retry until response[0].foo.bar == bar

response = 
[
  {
    "foo": {
      "bar": "baz"
    }
  }
]

[Thread-0] WARN com.intuit.karate - falha na avaliação da condição de nova tentativa: js falhou: 01: response[0].foo.bar == bar org.graalvm.polyglot.PolyglotException: TypeError: Não é possível ler a propriedade "foo" de .:program(Unnamed:1) indefinido

karate
  • 1 respostas
  • 16 Views
Martin Hope
Tony Thongsinthop
Asked: 2024-09-12 16:37:16 +0800 CST

Como executar um arquivo de recurso separado para limpar dados Execução POST em executor paralelo

  • 6

Imagem

Criei um arquivo de recurso de limpeza (j_cleanup.feature) para consultar todos os dados que foram inseridos e iniciar operações de API DELETE para limpá-los APÓS todos os arquivos de recurso serem executados.

Pergunta:

Dentro da classe de execução paralela acima, este arquivo j_cleanup.feature seria executado em paralelo com o executor principal (todos os arquivos de recursos no pacote tonyt) OU seria executado DEPOIS?

Estou preocupado que isso possa causar uma situação de deadlock em que um processo tenta postar dados em vez de outro querer excluí-los. Por favor, me oriente se o código abaixo é bom o suficiente para invocar j_cleanup.feature como tarefa de pós-processamento.

Obrigado.

karate
  • 1 respostas
  • 16 Views
Martin Hope
Tony Thongsinthop
Asked: 2024-09-12 14:15:21 +0800 CST

org.apache.http.wire exibe o token JWT, como faço para ocultá-lo?

  • 6

Imagem

Olá, quando executo o Karate parallel runner com mascaramento de log, notei que org.apache.http.wire ainda exibe a string de token, enquanto com.intuit.karate ocultou a string de token, ok.

Existe uma maneira de configurar o org.apache.http.wire para ocultar informações confidenciais, como o token JWT, neste caso?

karate
  • 1 respostas
  • 18 Views
Martin Hope
Tony Thongsinthop
Asked: 2024-09-10 13:38:56 +0800 CST

Como mesclar 2 payloads JSON usando Karate

  • 5

No meu projeto, há um requisito para que eu obtenha o user_id do Endpoint 1,

Em seguida, mescle com os dados das sessões do ponto final 2.

Entrada 1:

    {_user_id: "user1"}

Entrada 2:

    {
    "_session_id": "5182d9fe-1f4f-484b-88c2-708f32cdd661"
    },
    {
    "_session_id": "372cf574-2526-41ed-9a9b-77ecc50b0d66"
    }

Saída esperada

    {
    "_user_id: "user1",
    "_session_id": "5182d9fe-1f4f-484b-88c2-708f32cdd661"
    },
    {
    "_user_id: "user1",
    "_session_id": "372cf574-2526-41ed-9a9b-77ecc50b0d66"
    }

Existe uma maneira de conseguir isso no Karatê?

karate
  • 2 respostas
  • 40 Views
Martin Hope
sp13aut
Asked: 2024-08-30 10:15:58 +0800 CST

validação usando a combinação de um "marcador" e uma referência "própria"

  • 6

No Karate, estou tentando validar uma resposta json usando uma combinação de um marcador e uma variável de auto referência, conforme sugerido neste post . Mas a verificação nula não está funcionando como pretendido.

Tentando validar - a chave 'nome' é uma string, opcional e se presente não deve ser nula

Veja o trecho de código abaixo:

    * def aTest =
    """
    {
        name: null,
        type: "House",
    }
    """

    * def eTest =
    """
    {
      name: '##string? _ !==null',
      type: '##string',
      street: '##string'
    }
    """

    * match aTest == eTest

Quando executo o teste, espero que ele falhe para a chave 'name'. Mas o teste está passando. Não tenho certeza do que estou fazendo errado. Alguém pode me orientar sobre isso, por favor.

karate
  • 1 respostas
  • 29 Views
Martin Hope
Tony Thongsinthop
Asked: 2024-08-22 16:55:44 +0800 CST

Mascarando o cabeçalho de autorização no registro e relatório do Karatê

  • 5

Eu li a seção de mascaramento de log no documento karate => https://github.com/karatelabs/karate#log-masking

Porém, ainda não consegui encontrar nenhum exemplo que me permita mascarar o cabeçalho de autorização na solicitação da API.

(Tentei modificar a classe DemoLogModifier mas acho que não entendi direito) veja aqui

Seria ótimo se alguém pudesse me mostrar o código funcional.

Obrigado.

karate
  • 1 respostas
  • 23 Views
Martin Hope
USingh
Asked: 2024-03-08 23:22:17 +0800 CST

A sequência de parâmetros pode ser mantida com base em como é alimentada na sequência do arquivo de recursos?

  • 6

Eu tenho um caso de uso em que, por algum motivo, a sequência de parâmetros produz uma resposta http diferente e, portanto, por causa disso, o caso de teste está falhando.

Given url 'http://myurl.com'
And path '/mypath'
And param _x = abc
And param f = xyz
Then print response

Quando o caratê forma toda a estrutura do URL, ela é mostrada como - http://myurl.com/mypath?f=xyz&_x=abc Mas eu gostaria que fosse abaixo- http://myurl.com/mypath?_x =abc&f=xyz

A razão pela qual quero que seja o último é porque só assim estou obtendo o resultado desejado.

karate
  • 1 respostas
  • 29 Views

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Reformatar números, inserindo separadores em posições fixas

    • 6 respostas
  • Marko Smith

    Por que os conceitos do C++20 causam erros de restrição cíclica, enquanto o SFINAE antigo não?

    • 2 respostas
  • Marko Smith

    Problema com extensão desinstalada automaticamente do VScode (tema Material)

    • 2 respostas
  • Marko Smith

    Vue 3: Erro na criação "Identificador esperado, mas encontrado 'import'" [duplicado]

    • 1 respostas
  • Marko Smith

    Qual é o propósito de `enum class` com um tipo subjacente especificado, mas sem enumeradores?

    • 1 respostas
  • Marko Smith

    Como faço para corrigir um erro MODULE_NOT_FOUND para um módulo que não importei manualmente?

    • 6 respostas
  • Marko Smith

    `(expression, lvalue) = rvalue` é uma atribuição válida em C ou C++? Por que alguns compiladores aceitam/rejeitam isso?

    • 3 respostas
  • Marko Smith

    Um programa vazio que não faz nada em C++ precisa de um heap de 204 KB, mas não em C

    • 1 respostas
  • Marko Smith

    PowerBI atualmente quebrado com BigQuery: problema de driver Simba com atualização do Windows

    • 2 respostas
  • Marko Smith

    AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos

    • 1 respostas
  • Martin Hope
    Fantastic Mr Fox Somente o tipo copiável não é aceito na implementação std::vector do MSVC 2025-04-23 06:40:49 +0800 CST
  • Martin Hope
    Howard Hinnant Encontre o próximo dia da semana usando o cronógrafo 2025-04-21 08:30:25 +0800 CST
  • Martin Hope
    Fedor O inicializador de membro do construtor pode incluir a inicialização de outro membro? 2025-04-15 01:01:44 +0800 CST
  • Martin Hope
    Petr Filipský Por que os conceitos do C++20 causam erros de restrição cíclica, enquanto o SFINAE antigo não? 2025-03-23 21:39:40 +0800 CST
  • Martin Hope
    Catskul O C++20 mudou para permitir a conversão de `type(&)[N]` de matriz de limites conhecidos para `type(&)[]` de matriz de limites desconhecidos? 2025-03-04 06:57:53 +0800 CST
  • Martin Hope
    Stefan Pochmann Como/por que {2,3,10} e {x,3,10} com x=2 são ordenados de forma diferente? 2025-01-13 23:24:07 +0800 CST
  • Martin Hope
    Chad Feller O ponto e vírgula agora é opcional em condicionais bash com [[ .. ]] na versão 5.2? 2024-10-21 05:50:33 +0800 CST
  • Martin Hope
    Wrench Por que um traço duplo (--) faz com que esta cláusula MariaDB seja avaliada como verdadeira? 2024-05-05 13:37:20 +0800 CST
  • Martin Hope
    Waket Zheng Por que `dict(id=1, **{'id': 2})` às vezes gera `KeyError: 'id'` em vez de um TypeError? 2024-05-04 14:19:19 +0800 CST
  • Martin Hope
    user924 AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos 2024-03-20 03:12:31 +0800 CST

Hot tag

python javascript c++ c# java typescript sql reactjs html

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve