请放心-我无法将一个变量从一种方法传递给另一种方法

时间:2019-01-08 01:08:54

标签: java rest intellij-idea

我对放心使用Java还是相当陌生的,并且我正试图将变量从一种方法(或测试用例)转换为另一种方法,而我一直在获取“ null”。

我已经尝试了许多不同的方法,但是我一直在得到错误。基本上,我想要从测试“ getTweet”获取“ id”并将其传递给测试“ deleteTweet”。任何帮助将不胜感激。

import io.restassured.RestAssured;
import io.restassured.path.json.JsonPath;
import io.restassured.response.Response;
import static io.restassured.RestAssured.given;

import org.testng.annotations.Test;



public class twitterTesting {


    String consumerKey = consumer;
    String consumerSecret = secretConsumer;
    String accessToken = token;
    String accessSecret = secretToken;
    String tweetText = "Never give up!";
    String id;



    @Test
    public void createTweet() {
        RestAssured.baseURI = "https://api.twitter.com/1.1/statuses";
        given().
                auth().oauth(consumer, secretConsumer, token, secretToken).
                queryParam("status", tweetText).
                when().post("/update.json").
                then().assertThat().statusCode(200);



    }

   @Test
    public void getTweet() {
        RestAssured.baseURI = "https://api.twitter.com/1.1/statuses";
        Response res2 = given().
                        auth().oauth(consumerKey, consumerSecret, accessToken, accessSecret).
                        queryParam("count", "1").
                        when().get("/home_timeline.json").
                        then().assertThat().statusCode(200).
                        and().extract().response();
        JsonPath jsonResponse = resources.rawToJson(res2);
        String text = jsonResponse.getString("text");
        id = jsonResponse.getString("id");
        System.out.println(id);
        //System.out.println("/destroy/" + (id.substring(1, id.length()-1) + ".json"));
        String textModified = text.substring(1, text.length()-1);
        System.out.println(textModified);
        System.out.println(tweetText);

        assert text.contains(tweetText); //true
    }

    @Test
    public void deleteTweet() {
        System.out.println("/destroy/" + id + ".json");

    }
}

在将ID变量发送到“ deleteTweet”测试用例时,我一直得到/destroy/null.json。

1 个答案:

答案 0 :(得分:0)

每次运行测试时,您都会得到一个新对象,这主要是设计使然;测试应该相互独立。这样做的好处是,您可以单击一个(失败的)测试,然后再次运行该测试,而且,这意味着您无需定义测试的运行顺序。

因此,测试类基本上不应包含字段。摆脱所有这些。

然后“修复” deleteTweet,创建一个可能通常称为getTweet的方法(通常未标记为@Test!)(通常,测试方法称为testDeleteTweet或类似的方法,而不是deleteTweet),然后调用从deleteTweet中获取。

如果您必须使用现场材料,则可以做到这一点;有@BeforeTest,您可以放置​​一个方法:该方法将在每次测试中每次执行,并且该方法可以为您填充“ id”字段。但这确实意味着每个测试方法都会调用该方法,即使不需要它的测试方法也是如此。