当前位置: 首页 > 知识库问答 >
问题:

无法将json测试数据文件读入我的stepDef

湛骏祥
2023-03-14

无法读取json测试数据文件到我的stepDef。当我试图在maven中执行此操作时,我会收到下面的错误消息。

我的场景大纲:JSON关键字示例,假设我在github登录页面#,输入“”和“”,输入用户名和密码

Examples: {'datafile':'./src/main/resources/data/testData.json'}

我的测试数据。json

[
  { "username" : "jsonuser1" , "password":"jsonpass1" , "isvalid":"false" }
]

分步定义

@And("^I enter usernames and passwords$")
public void iEnterUsernamesAndPasswords(Map<Object, Object> data) {
    System.out.println("*************************"+ data.get("username") + data.get("password"));
    
}

错误msg:

init done 
08:48:10:169: Executing get parameters: {"url":"https://github.com/login"} 
08:48:10:778: command: get[ param-1: {url=https://github.com/login}] Result: null 
[WINDOWS  90.0.4430.212]: ▀ ▀ ▀ END STEP: Given I am on github login page ▀ ▀ ▀
08:48:10:781: Completed Teststep: Given I am on github login page 
08:48:10:787: Invoking Teststep: And I enter usernames and passwords 
[WINDOWS  90.0.4430.212]: ▄ ▄ ▄ BEGIN STEP: And I enter usernames and passwords ▄ ▄ ▄
08:48:10:787: Failure Teststep: And I enter usernames and passwords 
java.lang.RuntimeException: Wrong number of parameters, Expected 1 parameters but Actual is 0
    at com.qmetry.qaf.automation.step.JavaStep.processArgs(JavaStep.java:206) ~[qaf-2.1.15.jar:?]
    at com.qmetry.qaf.automation.step.JavaStep.doExecute(JavaStep.java:149) ~[qaf-2.1.15.jar:?]
    at com.qmetry.qaf.automation.step.BaseTestStep.execute(BaseTestStep.java:146) [qaf-2.1.15.jar:?]
    at com.qmetry.qaf.automation.step.StringTestStep.execute(StringTestStep.java:126) [qaf-2.1.15.jar:?]
    at com.qmetry.qaf.automation.step.client.Scenario.execute(Scenario.java:174) [qaf-2.1.15.jar:?]
    at com.qmetry.qaf.automation.step.client.DataDrivenScenario.scenario(DataDrivenScenario.java:66) [qaf-2.1.15.jar:?]
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64) ~[?:?]
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
    at java.lang.reflect.Method.invoke(Method.java:564) ~[?:?]
    at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:104) [testng-6.10.jar:?]
    at org.testng.internal.Invoker.invokeMethod(Invoker.java:645) [testng-6.10.jar:?]
    at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:851) [testng-6.10.jar:?]
    at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1177) [testng-6.10.jar:?]
    at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:129) [testng-6.10.jar:?]
    at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:112) [testng-6.10.jar:?]
    at org.testng.TestRunner.privateRun(TestRunner.java:778) [qaf-2.1.15.jar:?]
    at org.testng.TestRunner.run(TestRunner.java:632) [qaf-2.1.15.jar:?]
    at org.testng.SuiteRunner.runTest(SuiteRunner.java:387) [testng-6.10.jar:?]
    at org.testng.SuiteRunner.access$000(SuiteRunner.java:39) [testng-6.10.jar:?]
    at org.testng.SuiteRunner$SuiteWorker.run(SuiteRunner.java:421) [testng-6.10.jar:?]
    at org.testng.internal.thread.ThreadUtil$2.call(ThreadUtil.java:64) [testng-6.10.jar:?]
    at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) [?:?]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630) [?:?]
    at java.lang.Thread.run(Thread.java:832) [?:?]
[WINDOWS  90.0.4430.212]: ▀ ▀ ▀ END STEP: And I enter usernames and passwords ▀ ▀ ▀
08:48:10:787: Completed Teststep: And I enter usernames and passwords 
08:48:10:787: Competed scenario: JSON Keyword Example with status FAILURE 
08:48:10:806: Executing screenshot parameters: {} 
08:48:11:023: Executing quit parameters: {} 
08:48:11:025: command: quit[ param-1: {}] Result: Cannot invoke "String.toLowerCase()" because the return value of "com.qmetry.qaf.automation.util.PropertyUtil.getString(String)" is null 
08:48:11:026: Cannot invoke "String.toLowerCase()" because the return value of "com.qmetry.qaf.automation.util.PropertyUtil.getString(String)" is null 
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 4.093 sec <<< FAILURE! - in TestSuite
JSON Keyword Example(com.qmetry.qaf.automation.step.client.DataDrivenScenario)  Time elapsed: 2.984 sec  <<< FAILURE!
java.lang.RuntimeException: Wrong number of parameters, Expected 1 parameters but Actual is 0
    at com.qmetry.qaf.automation.step.client.DataDrivenScenario.scenario(DataDrivenScenario.java:66)
08:48:11:225: Stopping chrome driver service. 
Results :
Failed tests: 
  DataDrivenScenario.scenario:66->Scenario.execute:174 » Runtime Wrong number of...
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0

共有1个答案

谷德本
2023-03-14

对于任何需要参数的步骤,在定义步骤时需要指定参数占位符,并且需要提供调用时间的值。在您的情况下,请尝试更新步骤定义,如下所示:

@And("^I enter usernames and passwords \"([^\"]*)\"$")
public void iEnterUsernamesAndPasswords(Map<Object, Object> data) {
System.out.println("*************************"+ data.get("username") + data.get("password"));
}

在步骤调用时传递数据,

My Scenario
  Scenario Outline: JSON Keyword Example
    Given I am on github login page
    And I enter usernames and passwords "${args[0]}"

    Examples: {'datafile':'./src/main/resources/data/testData.json'}
 类似资料:
  • 嗨,我在node.js中得到了以下代码 我试图以以下json格式显示键和所有的值:

  • 我正在尝试将 json 文件读入 Spark 数据帧,但我将整个文件作为一行和一列获取,我试图将其拆分为多列: 这是我运行这行代码得到的输出: 这是已创建的数据帧的架构: 我的目标是将图像中的每个对象放在一行和分隔的列中,这意味着例如“Z4ah9SemQjX2cKN187pX”,其值为:艺术家,created_at…在第一行,“Z552dVXF5vp80bAajYrn”在第二行等。 我很陌生,可以

  • 我正在尝试从com包中的CSV文件中读取值。实例但当我使用以下语法运行代码时: 上面写着: java.io.FileNotFoundException: Dataset.csv 我也尝试过使用: 仍然不工作。任何帮助都会很有帮助。谢谢

  • 本文向大家介绍Python将json文件写入ES数据库的方法,包括了Python将json文件写入ES数据库的方法的使用技巧和注意事项,需要的朋友参考一下 1、安装Elasticsearch数据库 PS:在此之前需首先安装Java SE环境 下载elasticsearch-6.5.2版本,进入/elasticsearch-6.5.2/bin目录,双击执行elasticsearch.bat 打开浏览

  • 所以我想在一个控制器中创建两个存储。当我输入时,我确实返回到索引页面,但我提交的数据不存在。然后我看到了我的本地主机,但是我输入的数据也不在那里。当我输入时,没有错误消息。所以我不知道我的错误在哪里。 这是我的看法 createincome.blade.php 这是我的控制器 财务控制人。php 这是我的路线 web.php

  • 问题内容: 我在变量中存储了JSON数据。 我想将其写入文本文件进行测试,因此不必每次都从服务器获取数据。 目前,我正在尝试: 我收到此错误: TypeError:必须是字符串或缓冲区,而不是dict 如何解决这个问题? 问题答案: 您忘记了实际的JSON部分- 是字典,尚未进行JSON编码。写这样的最大兼容性(Python 2和3): 在现代系统(即Python 3和UTF-8支持)上,您可以使