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

使用Rest Assured和TestNG处理异常/故障

赵夕
2023-03-14

我试图找到一种通用的方法来处理测试中的错误,它使用TestNG作为框架,使用Rest Assured作为库来进行Rest调用。

    @Test
    public void readyForSend(String uid) {

        try{

        Response response =

        given().header("X-AI-Test-ID","new-shop-user").
               spec(requestSpecUserCreationService).
        when().
               get("/api/v11/new/createUser?uid=" + uid ).
        then().
              assertThat().statusCode(200);
        catch(AssertionError ae){
            logger.info("Unable to create new user");
        }
    }
<suite name="create new user" verbose="1" configfailurepolicy="continue">

对于每次迭代,我都有超过30个REST调用要进行,并且使用invocationcount=10,因此一个没有自己的try/catch的REST确保失败,然后整个批次都失败。我必须将每一个都包含在try/catch中吗?或者有没有更好的方法来执行“软断言”,这样测试在不单独处理的情况下就不会在我身上爆炸?

共有1个答案

尉迟跃
2023-03-14

一个简单的方法是简单地创建一个方法,它封装了get和其他post调用。您还可以在此方法中进行进一步的异常处理。可以返回状态代码,并在此之后执行软断言。例如。

 public static Response doGet(String endpoint) {
            Response response = given(defaultRequestSpec).when().get(endpoint).andReturn();
//defaultRequestSpec can hold your headers, if they are common or pass as arguments
            return response;
        }

在@test方法中,调用此方法

 @Test(invocationCount=10) {
        SoftAssert softAssert = new SoftAssert();
        softAssert.assertEquals(this.doGet("/api/v11/new/createUser?uid=...").statusCode(), 200, "Verify createUser response is 200");
    ....
    //further api calls
    softAssert.assertAll();
 }
 类似资料:
  • 有一种方法可以控制作业失败后在Azkaban中发生的事情,我的意思是,如果特定的作业失败,就做特定的事情,假设一个对hive的加载失败了,我想向splank发送错误,这可能吗?或者我应该创建特定的作业来插入并像python那样处理失败 谢谢

  • 我使用JPA和Hibernate作为容器管理事务的提供者(JBossAS 6.1.0.Final)。 我正在尝试实现一些细粒度的异常处理,因为我的应用程序上有一个特定的异常层次结构,所以我可以定义在任何情况下要做什么。因此,我已经研究了几个小时,发现文档很模糊,示例也有些原始,因为“为了清晰起见”总是忽略异常处理,或者是一个简单的try-catch块,用于处理异常e。 例如,采用以下代码: cat

  • 我正在尝试进行大量的外部服务调用,每个调用都遵循异常处理和有条件的进一步处理。我认为使用内部的. on完成来扩展这个不错的(Scala中带有期货的异步IO)示例会很容易,但似乎我对范围和/或期货有些不理解。有人能给我指出正确的方向吗? 在我的电脑上(Scala 2.10.4 ),这打印出来: 我要(顺序不重要):

  • 3.1 PG 无法达到 CLEAN 状态 创建一个新集群后,PG 的状态一直处于 active , active + remapped 或 active + degraded 状态, 而无法达到 active + clean 状态 ,那很可能是你的配置有问题。 你可能需要检查下集群中有关 Pool 、 PG 和 CRUSH 的配置项,做以适当的调整。 一般来说,你的集群中需要多于 1 个 OSD,

  • 进行 OSD 排障前,先检查一下 monitors 和网络。如果 ceph health 或 ceph -s 返回的是健康状态,这意味着 monitors 形成了法定人数。如果 monitor 还没达到法定人数、或者 monitor 状态错误,要先解决 monitor 的问题。核实下你的网络,确保它在正常运行,因为网络对 OSD 的运行和性能有显著影响。 2.1 收集 OSD 数据 开始 OSD

  • Monitor 维护着 Ceph 集群的信息,如果 Monitor 无法正常提供服务,那整个 Ceph 集群就不可访问。一般来说,在实际运行中,Ceph Monitor的个数是 2n + 1 ( n >= 0) 个,在线上至少3个,只要正常的节点数 >= n+1,Ceph 的 Paxos 算法就能保证系统的正常运行。所以,当 Monitor 出现故障的时候,不要惊慌,冷静下来,一步一步地处理。 1