Passing output of one test method to another method testng

后端 未结 3 1735
别跟我提以往
别跟我提以往 2020-12-06 18:55

I have to write the following unit test cases in testng:

  1. saveProductTest which would return productId if product details are saved successfully in DB.

相关标签:
3条回答
  • 2020-12-06 19:07

    Each unit test should be independent of other tests so you more easily can see what fails. You can have a helper method saving the product and returning the id and call this from both tests.

    0 讨论(0)
  • 2020-12-06 19:11

    With all due respect to simendsjo, the fact that all tests should be independent from each other is a dogmatic approach that has a lot of exceptions.

    Back to the original question: 1) use dependent methods and 2) store the intermediate result in a field (TestNG doesn't recreate your instances from scratch, so that field will retain its value).

    For example

    private int mResult;
    
    @Test
    public void f1() {
      mResult = ...
    }
    
    @Test(dependsOnMethods = "f1")
    public void f2() {
      // use mResult
    }
    
    0 讨论(0)
  • 2020-12-06 19:26

    With the ITestContext object. It's a object available globally at the Suite context and disponible via parameter in each @Test.

    For example:

    @Test 
    public void test1(ITestContext context, Method method) throws Exception {
        // ...
        context.setAttribute(Constantes.LISTA_PEDIDOS, listPaisPedidos);
        // ...
    }
    
    @Test
    public void test2(ITestContext context, Method method) throws Exception {
        List<PaisPedido> listPaisPedido = (List<PaisPedido>)
        context.getAttribute(Constantes.LISTA_PEDIDOS);
        // ...
    }
    
    0 讨论(0)
提交回复
热议问题