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

java中如何在放心测试中传递标头

武琛
2023-03-14

我是新的放心,我试图做一个非常基本的测试来检查响应体和状态。我在这个API调用中按要求传递头部,但当我运行测试时,我得到了401个未经授权的消息,而不是在响应体中显示结果。当我使用Postman运行相同的API时,它的工作很好

package test;

import org.testng.Assert;
import org.testng.annotations.Test;

import io.restassured.RestAssured;
import io.restassured.http.Method;
import io.restassured.response.Response;
import io.restassured.specification.RequestSpecification;

public class SimpleGetTest {

    @Test
    public void GetWeatherDetails() {

        RestAssured.baseURI = "https://test.com";


        RequestSpecification httpRequest = RestAssured.given();

        Response response = httpRequest.given().header("Content-Type", "application/json").given()
                .header("x-api-key", "123456").
                request(Method.GET, "/hello");

        System.out.println("Response sent =>  " + response);


        String responseBody = response.getBody().asString();
        System.out.println("Response Body is =>  " + responseBody);


        int statusCode = response.getStatusCode();
        System.out.println("Actual Status Code is : " + statusCode);

        Assert.assertEquals(statusCode, 200,
                "BUG : Status code is coming as different");
        System.out.println("Expected : Status code coming correct");

    }
}

下面是我得到的控制台消息,其中显示401

响应发送=>io.restassured.internal.restassuredresponseImpl@18cebaa5响应正文为=>“消息”:“unauthorized_access”,“代码”:“401”,“数据”:null}实际状态代码为:200预期:状态代码正确通过:GetWeatherDetails

共有1个答案

董同
2023-03-14

我在我的eclipse上运行了您的精确测试,它按预期工作。以下是输出:

[RemoteTestNG] detected TestNG version 6.14.3
Response sent =>  io.restassured.internal.RestAssuredResponseImpl@21526f6c
Response Body is =>  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<script type="text/javascript">
function getCookie(c_name) { // Local function for getting a cookie value
    if (document.cookie.length > 0) {
        c_start = document.cookie.indexOf(c_name + "=");
        if (c_start!=-1) {
        c_start=c_start + c_name.length + 1;
        c_end=document.cookie.indexOf(";", c_start);

        if (c_end==-1) 
            c_end = document.cookie.length;

        return unescape(document.cookie.substring(c_start,c_end));
        }
    }
    return "";
}
function setCookie(c_name, value, expiredays) { // Local function for setting a value of a cookie
    var exdate = new Date();
    exdate.setDate(exdate.getDate()+expiredays);
    document.cookie = c_name + "=" + escape(value) + ((expiredays==null) ? "" : ";expires=" + exdate.toGMTString()) + ";path=/";
}
function getHostUri() {
    var loc = document.location;
    return loc.toString();
}
setCookie('YPF8827340282Jdskjhfiw_928937459182JAX666', '86.172.130.153', 10);
try {  
    location.reload(true);  
} catch (err1) {  
    try {  
        location.reload();  
    } catch (err2) {  
        location.href = getHostUri();  
    }  
}
</script>
</head>
<body>
<noscript>This site requires JavaScript and Cookies to be enabled. Please change your browser settings or upgrade your browser.</noscript>
</body>
</html>

Actual Status Code is : 200
Expected : Status code coming correct
PASSED: GetWeatherDetails

===============================================
    Default test
    Tests run: 1, Failures: 0, Skips: 0
===============================================


===============================================
Default suite
Total tests run: 1, Failures: 0, Skips: 0
===============================================

确保您有正确的依赖项,并检查您正在使用的TestNG版本。

 类似资料:
  • 我对Java是个新手,我正在尝试做一个非常基本的测试,检查API的响应是否为200ok。你能告诉我,为了传递多个标题Id、Key和ConId,我需要在下面的脚本中更改什么吗?

  • 问题内容: 将参数传递给已编译的代码: 结果是: 显示已通过的用户名。 目的: 为了防止每次测试代码时都需要手动构建和运行代码,目的是编写一个能够测试参数传递的测试。 尝试 运行以下测试: 结果是: 问题 它看起来像那样不能够这个参数传递给函数的结果是不是 问题答案: 根据我的评论,第一个值是可执行文件本身的(路径),因此应解决您的问题。您可以从标准包中查看标志测试,他们正在做类似的事情。 另外,

  • 我使用放心java,我使用post Request来获得响应。从我的代码中,我能够得到响应,我看到在响应中,我看到我要存储的值存在于键集中。这是示例: 在上面的示例中,我使用Json路径解析表达式,我希望使用值“A”从中提取键(“345”)。 当我使用上面的代码时,它抛出一个错误,但是当我运行下面的代码时。 我得到的输出是A。我知道什么是[A,b,c,d,e,f],但我不知道什么是[A,b、c,d

  • 我在json文件中有一个测试数据,如下所示- 我在java selenium中有一个测试方法,它将遍历json,并用实际数据检查数据是否存在。下面是Java selenium方法。 上面的代码循环了两次,因为json对象有两个测试数据,现在如果其中一个测试在最后失败,它只会提到测试失败,因为它是在else条件中添加的。 我使用了如下软断言- 我不知道json文件中的两个测试数据集中哪一个失败了。运

  • 问题内容: 我希望能够通过HTML标签传递文本,如下所示: 但是在的render方法中,当我打印出时,它实际上打印出了所有内容: 有什么方法可以使React解析HTML并将其正确转储吗? 问题答案: 您可以将混合数组与字符串和JSX元素一起使用(请参阅此处的文档): 这里有一个小提琴显示了它的工作 原理: http //jsfiddle.net/7s7dee6L/ 另外,作为最后的选择,您始终可以

  • Junit4中是否有方法将一些预初始化的数据(如http连接)传递给所有子(即套件)测试类,这些数据是使用带有“@RunWith(Suite.class)”注释的类中的“@ClassRule”初始化的?还有,如何确保套件中的类不能单独运行? 例如 谢谢, 帕迪