AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / coding / 问题

问题[karate](coding)

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

空手道加特林模拟:“没有要运行的模拟”错误 Java 21

  • 6

我正在将 Karate 与 Gatling 集成以进行性能测试。但是,当我使用 Maven 运行模拟时,遇到以下错误:

[错误] 没有要运行的模拟 [信息] 构建失败项目结构:这是我的项目结构:

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

Maven 配置:这是我的 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>

Scala 模拟文件:这是我的 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)
  )
}

使用的命令:

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

当我们将子字符串作为变量传递时,匹配失败

  • 6

我的有效载荷有一个标签数据,我将其值设置为“测试”......

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

当我进行匹配时,它失败并出现以下错误 -

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

但是当我将值直接传递给 match 语句时,它通过了验证 -

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

这是预期的行为吗?为什么当我们在匹配条件下将子字符串作为变量传递时验证会失败?我做错了什么吗?

非常感谢您的帮助。如果您需要有关该错误的更多详细信息,请随时告诉我。

PS-如果test.input.data不是子字符串,则会毫无问题地返回。

例子 :-

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

结果 - 通过/成功

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

使用 karate 1.5 时不会生成 Karate.log 文件

  • 6

我在 src/test/resources 文件夹下放置了下面的 logback-test.xml 文件。

<?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>

在 1.4.1 之前它运行良好。当我切换到 1.5 时,它停止生成日志。

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

重试直到得到响应数组

  • 6

希望有人能告诉我我在这里做错了什么。每次重试时,我都会在响应中看到 foo 的值。奇怪的是,一段时间后它就会通过。如果我删除重试直到并在调用后对其进行评估,则不会出现问题。

* def bar = "baz"

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

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

[Thread-0] WARN com.intuit.karate - 重试条件评估失败:js 失败:01:response[0].foo.bar == bar org.graalvm.polyglot.PolyglotException:TypeError:无法从未定义读取属性“foo”。:program(Unnamed:1)

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

如何运行单独的功能文件来清理并行运行器中的数据 POST 执行

  • 6

图像

我创建了一个清理功能文件(j_cleanup.feature)来查询所有已插入的数据,并在执行所有功能文件之后启动 API DELETE 操作来清理它们。

问题:

在上面的并行运行器类中,这个 j_cleanup.feature 文件会与主运行器(tonyt 包下的所有功能文件)并行执行吗?还是会在之后执行?

我担心这可能会导致死锁情况,其中一个进程试图发布数据,而另一个进程想要删除数据。请指导我下面的代码是否足以调用 j_cleanup.feature 作为后处理任务。

谢谢。

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

org.apache.http.wire 显示 JWT token,如何隐藏它?

  • 6

图像

你好,当我运行带有日志屏蔽的 Karate 并行运行器时,我注意到 org.apache.http.wire 仍然显示令牌字符串,而 com.intuit.karate 已隐藏令牌字符串。

在这种情况下,有没有办法配置 org.apache.http.wire 来隐藏 JWT 令牌等敏感信息?

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

如何使用 Karate 合并 2 个 JSON 有效负载

  • 5

在我的项目中,我需要从端点 1 获取 user_id,

然后与来自端点 2 的会话数据合并。

输入 1:

    {_user_id: "user1"}

输入 2:

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

预期输出

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

空手道有没有办法实现这一点?

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

使用“标记”和“自我”参考的组合进行验证

  • 6

在 Karate 中,我尝试使用标记和自引用变量的组合来验证 json 响应,如本文所建议。但空检查未按预期工作。

尝试验证 - 'name' 键是字符串,可选,如果存在则不应为空

请参阅下面的代码片段:

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

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

    * match aTest == eTest

当我运行测试时,我预计“name”键的测试会失败。但测试通过了。不知道我做错了什么。有人能指导我吗?

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

屏蔽空手道日志和报告中的授权标头

  • 5

我已经阅读了空手道文档中的日志屏蔽部分 => https://github.com/karatelabs/karate#log-masking

但是,我仍然找不到任何允许我屏蔽 API 请求中的授权标头的示例。

(我试图修改 DemoLogModifier 类,但我认为我没有做对) 参见此处

如果有人能向我展示有效的代码就太好了。

谢谢。

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

参数的顺序是否可以根据特征文件序列中的输入方式来维护?

  • 6

我有一个用例,由于某种原因,参数序列确实会产生不同的 http 响应,因此测试用例失败。

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

当空手道形成整个 url 结构时,它显示为 - http://myurl.com/mypath?f=xyz&_x=abc 但我希望它是下面的 - http://myurl.com/mypath?_x =abc&f=xyz

我之所以希望它是后者,只是因为只有这样我才能得到想要的结果。

karate
  • 1 个回答
  • 29 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    重新格式化数字,在固定位置插入分隔符

    • 6 个回答
  • Marko Smith

    为什么 C++20 概念会导致循环约束错误,而老式的 SFINAE 不会?

    • 2 个回答
  • Marko Smith

    VScode 自动卸载扩展的问题(Material 主题)

    • 2 个回答
  • Marko Smith

    Vue 3:创建时出错“预期标识符但发现‘导入’”[重复]

    • 1 个回答
  • Marko Smith

    具有指定基础类型但没有枚举器的“枚举类”的用途是什么?

    • 1 个回答
  • Marko Smith

    如何修复未手动导入的模块的 MODULE_NOT_FOUND 错误?

    • 6 个回答
  • Marko Smith

    `(表达式,左值) = 右值` 在 C 或 C++ 中是有效的赋值吗?为什么有些编译器会接受/拒绝它?

    • 3 个回答
  • Marko Smith

    在 C++ 中,一个不执行任何操作的空程序需要 204KB 的堆,但在 C 中则不需要

    • 1 个回答
  • Marko Smith

    PowerBI 目前与 BigQuery 不兼容:Simba 驱动程序与 Windows 更新有关

    • 2 个回答
  • Marko Smith

    AdMob:MobileAds.initialize() - 对于某些设备,“java.lang.Integer 无法转换为 java.lang.String”

    • 1 个回答
  • Martin Hope
    Fantastic Mr Fox msvc std::vector 实现中仅不接受可复制类型 2025-04-23 06:40:49 +0800 CST
  • Martin Hope
    Howard Hinnant 使用 chrono 查找下一个工作日 2025-04-21 08:30:25 +0800 CST
  • Martin Hope
    Fedor 构造函数的成员初始化程序可以包含另一个成员的初始化吗? 2025-04-15 01:01:44 +0800 CST
  • Martin Hope
    Petr Filipský 为什么 C++20 概念会导致循环约束错误,而老式的 SFINAE 不会? 2025-03-23 21:39:40 +0800 CST
  • Martin Hope
    Catskul C++20 是否进行了更改,允许从已知绑定数组“type(&)[N]”转换为未知绑定数组“type(&)[]”? 2025-03-04 06:57:53 +0800 CST
  • Martin Hope
    Stefan Pochmann 为什么 {2,3,10} 和 {x,3,10} (x=2) 的顺序不同? 2025-01-13 23:24:07 +0800 CST
  • Martin Hope
    Chad Feller 在 5.2 版中,bash 条件语句中的 [[ .. ]] 中的分号现在是可选的吗? 2024-10-21 05:50:33 +0800 CST
  • Martin Hope
    Wrench 为什么双破折号 (--) 会导致此 MariaDB 子句评估为 true? 2024-05-05 13:37:20 +0800 CST
  • Martin Hope
    Waket Zheng 为什么 `dict(id=1, **{'id': 2})` 有时会引发 `KeyError: 'id'` 而不是 TypeError? 2024-05-04 14:19:19 +0800 CST
  • Martin Hope
    user924 AdMob:MobileAds.initialize() - 对于某些设备,“java.lang.Integer 无法转换为 java.lang.String” 2024-03-20 03:12:31 +0800 CST

热门标签

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

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve