我无法使用REST API发布请求将存储在.json文件中的黄瓜测试结果更新为Jira。我可以使用相同的方法来更新Cucumber中的功能,但不适用于我的Json结果文件。我对Java和Json很陌生。因此在理解它们时遇到了一些问题。
我尝试将Json文件转换为Json数组以及Json对象,但是它不起作用。
//下面是我的方法,该方法从项目获取文件路径和URL,以在Jira中的Xray上更新我的结果
public static void importCucumberResultFilesToJira(String filePath, String resultTypeUrlValue) throws IOException {
String jiraUrl = config.getJiraLoginValue();
log.info(String.format("Starting upload of Cucumber features to XRAY on Jira project: %s\n Using Jira user: %s ", config.getJiraProjectValue(), config.getJiraLoginValue()));
log.info(String.format("Path to Report: %s", filePath));
String authentication = config.getJiraLoginValue() + ':' + config.getJiraPassword();
BASE64Encoder encoder = new BASE64Encoder();
String encoded = null;
try {
encoded = encoder.encode((authentication).getBytes("UTF-8"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
Client client = ClientBuilder.newBuilder()
.register(MultiPartFeature.class).property(HttpHeaders.AUTHORIZATION, encoded).build();
//Import type is dynamic below
StringBuffer url = new StringBuffer(resultTypeUrlValue);
url.append("?projectKey=").append(config.getJiraProjectValue());
WebTarget webTarget = client.target(url.toString());
log.info(String.format("URL of the XRAY API: %s", url.toString()));
//Read .json file
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader(filePath));
} catch (FileNotFoundException e) {
System.out.println("File not found");
System.exit(1);
}
JsonParser parser = new JsonParser();
Object obj = parser.parse(br);
JsonArray arr = (JsonArray) obj;
System.out.println(arr);
Response response = webTarget.request()
.accept(MediaType.APPLICATION_JSON).
header(HttpHeaders.AUTHORIZATION, "Basic " + encoded).post(
Entity.json(arr));
log.info(response.getStatus() + " "
+ response.getStatusInfo() + " " + response);
log.info(response.getStatus() + " "
+ response.getStatusInfo() + " " + response);
log.info("End of XRAY file upload publication");
}
//我在POM.xml中的依赖项已发布,因为通过在SO和其他网站上进行的研究,有时某些依赖项会带来问题
<dependencies>
<!-- https://mvnrepository.com/artifact/io.cucumber/cucumber-java -->
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-java</artifactId>
<version>4.7.2</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/io.cucumber/cucumber-core -->
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-core</artifactId>
<version>4.7.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apiguardian/apiguardian-api -->
<dependency>
<groupId>org.apiguardian</groupId>
<artifactId>apiguardian-api</artifactId>
<version>1.1.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.cucumber/cucumber-junit -->
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-junit</artifactId>
<version>4.7.2</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.5.1</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mockito/mockito-core -->
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>2.28.2</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.141.59</version>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-picocontainer</artifactId>
<version>4.5.3</version>
</dependency>
<!-- Web driver manager dependency -->
<dependency>
<groupId>io.github.bonigarcia</groupId>
<artifactId>webdrivermanager</artifactId>
<version>3.6.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.github.bonigarcia</groupId>
<artifactId>webdrivermanager</artifactId>
<version>3.6.2</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<version>3.13.2</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.ws.rs/javax.ws.rs-api -->
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>javax.ws.rs-api</artifactId>
<version>2.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.glassfish/javax.json -->
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.json</artifactId>
<version>1.0.4</version>
</dependency>
<!-- https://mvnrepository.com/artifact/log4j/log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>com.github.mkolisnyk</groupId>
<artifactId>cucumber-runner</artifactId>
<version>1.3.5</version>
</dependency>
<!-- Start - Following dependencies are for XRAY export functionalities -->
<dependency>
<groupId>com.xpandit.xray</groupId>
<artifactId>xray-maven-plugin</artifactId>
<version>1.0.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-client</artifactId>
<version>2.28</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-multipart</artifactId>
<version>2.28</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-common</artifactId>
<version>2.28</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.inject</groupId>
<artifactId>jersey-hk2</artifactId>
<version>2.28</version>
</dependency>
<!-- End - Dependencies are for XRAY export functionalities -->
<!-- https://mvnrepository.com/artifact/org.json/json -->
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20190722</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.glassfish.jersey.media/jersey-media-json-jackson -->
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>2.29</version>
</dependency>
</dependencies>
我用来导出文件的网址是https://jira.mydomain.net/rest/raven/1.0/import/execution/cucumber
当我从文件中提取Json主体并将其作为Postman中的POST请求发送时,它可以完美工作。我只想在我的Test Automation项目中实现与Java代码相同的功能。
任何帮助我获得200级身份的人将不胜感激。
答案 0 :(得分:0)
好吧,我自己找到了问题的答案。我要做的就是将.json文件作为InputStream传递给Response而不是Json Array。我刚刚更换了
JsonParser parser = new JsonParser();
Object obj = parser.parse(br);
JsonArray arr = (JsonArray) obj;
与
InputStream input = new FileInputStream(filePath);