【问题标题】:Null token returned返回空令牌
【发布时间】:2017-10-13 05:42:33
【问题描述】:

我正在测试 API 端点。问题是当我检查 Swagger 时,它返回一个有效的令牌,但在我的测试中它返回 NULL。你能指出我在哪里做错了吗?

 public static void createOrganization() {
    Map<String, String> org = new HashMap();
    org.put("directorName", "name");
    org.put("email", "email@gmail.com");
    org.put("website", "www.site.com");
    org.put("phoneNumber", "000111");

    String registrationToken = given().
            contentType("application/json").
            body(org).
            when().
            post("/v3/organizations").
            then().
            extract().path("registrationToken");

    System.out.println("Token: "+ registrationToken);

输出:令牌:null

更新: 也许我错误地使用了 extract(),也许以后有不同的解决方案可以使用生成的值。因为对于 registerDevice() 我也得到了 NULL 。

public static void registerDevice(){
    String clientDeviceId =
    given().
            param("phoneNumber", "000111").
            param("model", "samsung").
            param("platform", "0").
            param("push_token",SenimEnvironmentVars.testPushToken).
            param("uuid", SenimEnvironmentVars.testUUID).
            param("version", "7.1").
            when().
            post("/v3/user-devices").
            then().
            contentType("application/json").
            extract().path("clientDeviceId");

    System.out.println("Device ID: "+ clientDeviceId); //also prints NULL
}

还有其他方法可以生成令牌、设备 ID 等并在以后使用它们吗?

【问题讨论】:

  • 路径输入的值是否正确?'/'或需要正确的东西来制作路径?
  • 请显示您的配置放心。服务器的主机、端口、基本路径等...
  • @VladislavKoroteev 因为其他测试正在运行,我不认为这是路径。但是这里是: public static void setup() { String basePathStr = System.getProperty("server.base"); if(basePathStr==null){ basePathStr = ""; } basePath = basePathStr;字符串 baseHost = System.getProperty("server.host"); if(baseHost==null){ baseHost = "localhost:8080"; } baseURI = baseHost; }
  • 您是否尝试过记录输出以查看它返回的内容 - then().log().body()
  • 在这种情况下,路径应该是extract().path("content.registrationToken")

标签: java automated-tests rest-assured web-api-testing


【解决方案1】:

正如documentation 所说的

您可以从响应中提取值或返回响应 在您使用 提取方法

所以试着在then之后写一些验证方法,比如contentType(JSON).

【讨论】:

  • 我已将其重写为文档状态( body(org).when().post("/v3/organizations").then().contentType("application/json") . extract().path("registrationToken");) ,仍然得到同样的错误。无法在空对象上获取属性“registrationToken”
  • 在这个 cmets 请求的 url 中包含“v3”,但在原始问题中它没有。你对自己的 basePath 有信心吗?
  • 抱歉造成混淆,可能是我在编辑和检查基本路径时删除了。我有v3,还是一样的错误
猜你喜欢
  • 2019-05-03
  • 1970-01-01
  • 2016-06-26
  • 2017-07-26
  • 1970-01-01
  • 1970-01-01
  • 2021-01-01
  • 2019-07-02
  • 2017-04-13
相关资源
最近更新 更多