我正在使用java中的RestAssured库。
我有下面的配置类。
import io.restassured.RestAssured;
import org.junit.BeforeClass;
import static io.restassured.RestAssured.given;
public class TestConfig {
@BeforeClass
public static void setup(){
APICredentials ac = new APICredentials();
RestAssured.baseURI = "https://api.twitter.com";
RestAssured.basePath = "/1.1/";
}
}
然后我有一个测试类,它继承了config类。
import org.junit.Test;
import static io.restassured.RestAssured.*;
import static org.hamcrest.CoreMatchers.equalTo;
public class MyFirstTest extends TestConfig{
@Test
public void getUserInfo() {
APICredentials ac = new APICredentials();
given().
log().all().
auth().oauth(ac.getConsumer_key(),ac.getConsumer_secret(),ac.getAccess_token(),ac.getToken_secret()).
when().
get("/users/show.json?screen_name=DexisKenway").then().statusCode(200);
}
}
这个测试运行得很好,但我必须重复下面的代码 然而,我必须在每个测试中重复下面的代码。
APICredentials ac = new APICredentials();
given().
log().all().
auth().oauth(ac.getConsumer_key(),ac.getConsumer_secret(),ac.getAccess_token(),ac.getToken_secret()).
我正在寻找一个解决方案,将认证部分添加到以下类中 测试配置 类,这样,我就不需要每次重复我的代码了。 这是我的解决方案。
@BeforeClass
public static void setup(){
APICredentials ac = new APICredentials();
RestAssured.baseURI = "https://api.twitter.com";
RestAssured.basePath = "/1.1/";
RestAssured.given().
log().all().
auth().oauth(ac.getConsumer_key(),ac.getConsumer_secret(),ac.getAccess_token(),ac.getToken_secret());
}
但是.., 然后我的请求失败了,代码是400!
请用下面的代码试一下,希望能解决你的问题。
import io.restassured.builder.RequestSpecBuilder;
import io.restassured.specification.RequestSpecification;
import org.junit.BeforeClass;
public class TestConfig {
@BeforeClass
public static void setup(){
APICredentials ac = new APICredentials();
RequestSpecification requestSpecification = new RequestSpecBuilder()
.setBaseUri("https://api.twitter.com")
.setBasePath("/1.1/")
.addHeader("Content-Type","application/json")
.addHeader("Accept","application/json")
.addFilter(new RequestLoggingFilter())
.addFilter(new ResponseLoggingFilter())
.build();
requestSpecification.auth().oauth(ac.getConsumer_key(),ac.getConsumer_secret(),ac.getAccess_token(),ac.getToken_secret());
RestAssured.requestSpecification = requestSpecification;
}
}
希望能解决你的问题