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

Java 无法将json测试数据文件读入我的stepDef,java,json,selenium,qaf,perfecto,Java,Json,Selenium,Qaf,Perfecto,无法将json测试数据文件读入我的stepDef。当我尝试在maven中执行此操作时,我得到下面的错误消息 我的情景 场景大纲:JSON关键字示例 假设我在github登录页面上 #我输入“”和“” 我输入用户名和密码 Examples: {'datafile':'./src/main/resources/data/testData.json'} My testData.json [ { "username" : "jsonuser1" , &quo

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

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

Examples: {'datafile':'./src/main/resources/data/testData.json'}
My testData.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"));
    
}
@和(“^I输入用户名和密码$”)
公用无效IEnterUserNames和密码(地图数据){
System.out.println(“*************************”+data.get(“用户名”)+data.get(“密码”));
}
错误消息:

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
init done
08:48:10:169:正在执行get参数:{“url”:https://github.com/login"} 
08:48:10:778:命令:get[param-1:{url=https://github.com/login}]结果:空
[WINDOWS 90.0.4430.212]:▀ ▀ ▀ 结束步骤:假设我在github登录页面上▀ ▀ ▀
08:48:10:781:已完成测试步骤:假设我在github登录页面上
08:48:10:787:调用Teststep:并输入用户名和密码
[WINDOWS 90.0.4430.212]:▄ ▄ ▄ 开始步骤:输入用户名和密码▄ ▄ ▄
08:48:10:787:失败测试步骤:然后输入用户名和密码
java.lang.RuntimeException:参数数目错误,应为1个参数,但实际为0
在com.qmetry.qaf.automation.step.JavaStep.processArgs(JavaStep.java:206)~[qaf-2.1.15.jar:?]
在com.qmetry.qaf.automation.step.JavaStep.doExecute(JavaStep.java:149)~[qaf-2.1.15.jar:?]
在com.qmetry.qaf.automation.step.BaseTestStep.execute(BaseTestStep.java:146)[qaf-2.1.15.jar:?]
在com.qmetry.qaf.automation.step.StringTestStep.execute(StringTestStep.java:126)[qaf-2.1.15.jar:?]
在com.qmetry.qaf.automation.step.client.Scenario.execute(Scenario.java:174)[qaf-2.1.15.jar:?]
在com.qmetry.qaf.automation.step.client.DataDrivenScenario.scenario(DataDrivenScenario.java:66)[qaf-2.1.15.jar:?]
在jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(本机方法)~[?:?]
在jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)~[?:?]
在jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)~[?:?]
在java.lang.reflect.Method.invoke(Method.java:564)~[?:?]
在org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:104)[testng-6.10.jar:?]
在org.testng.internal.Invoker.invokeMethod(Invoker.java:645)[testng-6.10.jar:?]
在org.testng.internal.Invoker.invokeTestMethod(Invoker.java:851)[testng-6.10.jar:?]
在org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1177)[testng-6.10.jar:?]
在org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:129)[testng-6.10.jar:?]
在org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:112)[testng-6.10.jar:?]
在org.testng.TestRunner.privateRun(TestRunner.java:778)[qaf-2.1.15.jar:?]
在org.testng.TestRunner.run(TestRunner.java:632)[qaf-2.1.15.jar:?]
在org.testng.SuiteRunner.runTest(SuiteRunner.java:387)[testng-6.10.jar:?]
在org.testng.SuiteRunner.access$000(SuiteRunner.java:39)[testng-6.10.jar:?]
在org.testng.SuiteRunner$SuiteWorker.run(SuiteRunner.java:421)[testng-6.10.jar:?]
在org.testng.internal.thread.ThreadUtil$2.call(ThreadUtil.java:64)[testng-6.10.jar:?]
在java.util.concurrent.FutureTask.run(FutureTask.java:264)[?:?]
位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)[?:?]
在java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)[?:?]
在java.lang.Thread.run(Thread.java:832)[?:?]
[WINDOWS 90.0.4430.212]:▀ ▀ ▀ 结束步骤:输入用户名和密码▀ ▀ ▀
08:48:10:787:已完成测试步骤:并输入用户名和密码
08:48:10:787:竞争场景:状态失败的JSON关键字示例
08:48:10:806:正在执行屏幕截图参数:{}
08:48:11:023:正在执行退出参数:{}
08:48:11:025:命令:退出[param-1:{}]结果:无法调用“String.toLowerCase()”,因为“com.qmetry.qaf.automation.util.PropertyUtil.getString(String)”的返回值为空
08:48:11:026:无法调用“String.toLowerCase()”,因为“com.qmetry.qaf.automation.util.PropertyUtil.getString(String)”的返回值为null

测试运行:1,失败:1,错误:0,跳过:0,经过的时间:4.093秒对于任何需要参数的步骤,您需要在定义步骤时指定参数占位符,并需要提供调用时间的值。 在您的情况下,请尝试更新步骤定义,如下所示:

@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'}