在自动化测试中使用 DataProvider 接收 MethodMatcherException

问题描述 投票:0回答:0

对这个论坛还很陌生,还没有编写自动化测试,但是就这样了....

我正在为 API 调用编写一些自动化测试 - IntelliJ 中的 java / Maven 项目中的 200、204、400、401、403 等。我正在使用 2 个不同的数据提供者。第一个用于 200,第二个用于 204 / 400 / 401 / 403。对于 200,我从 Excel 电子表格中获取帐户并将它们作为参数传递给请求。我已经设法让 204 开始工作,因为我在请求中对这些值进行了硬编码。当涉及到 200 时,当我返回 200 Object[][] 时,我收到了 MethodMatcherException。以下是一些测试片段:

403的数据提供者

@DataProvider(name = "accountData") public Object[][] provideData(方法方法){

    Object[][] accountDataFor403 = {
            {"Z1234567"}, {"Z234567"}, {"Z3456789"}}

String methodName = method.getName();

    // if (methodName.equals("get403Response")) {

       //  return accountDataFor403;

200响应的数据提供者

@DataProvider(name = "accountData1") public Object[][] provideData1(Method 方法) {

    String[][] accountDataFor200 = ExcelUtils.excelArray();  
    
    return accountDataFor200;
}

使用数据提供程序“accountData”或“accountData1”调用的方法示例(200 和 403 的方法几乎相同

@Test(dataProvider = "accountData1") public void get200Response(String accountNumber) {

    String response = given().log().all()
            .headers("Authorization", returnToken())
            .headers("X-Correlation-ID", "me123")
            .headers("content-type", "application/json")
            .body(payloads.myFile(accountNumber))
            .when()
            .post("URL goes here")
            .then().log().all().assertThat().statusCode(200).extract().response().asString();

在 403 DataProvider 上,我有 3 个帐户,当传递给 @Test - get403Response 时,将触发 3 X 403 测试,每个测试都传递帐号。

当我尝试对 200(仅供参考,我在 Excel 表中有 3 个帐户)运行相同的测试时,执行完全相同的测试。此时我收到 MethodMatcherException。我明白为什么我会收到此错误,因为我在这两种方法中传递的参数数量需要相同。但是为什么我在 403 测试中没有收到这个错误?????这些方法返回二维数组,“get200Response”和“get403response”都有一个字符串作为参数。

对于 200 - 我如何从“ExcelUtils.excelArray();”传递 3 个帐户以便按顺序处理(与 403 测试相同?)

谢谢

不知道从这里去哪里

java automated-tests testng rest-assured
© www.soinside.com 2019 - 2024. All rights reserved.