接口自动化分层实践

Jiaqi.zhang 于 2023-07-24 发布

接口测试三步:参数构建、请求响应、断言结果。

先来实现一个简单的场景:

新增外呼任务–执行外呼任务–查看外呼任务详情

image-20230809141636418

根据接口测试三步走来实现:

@Data
@AllArgsConstructor
@NoArgsConstructor
public class AddCallOutTaskModel {
    private String taskName;
  	private String taskType;
}
public class BatchCallOutApi {
    private static final String BOSS_USER = BossUser.Admin.getPhone();

  	/**
  	 * 发起请求,获取响应
  	 */
    private String addBatchCallOutTaskApi(ApiCaseModel apiCaseModel) {
        String url = HOST_CALLOUT + "/call-out-task/add";
        return post(url, apiCaseModel);
    }
  
  	/**
  	 * 构造请求参数
  	 */
    public String addBatchCallOutTaskApiBody(AddCallOutTaskModel addCallOutTaskModel) {
        ApiCaseModel apiCaseModel = new ApiCaseModel(BOSS_USER, addCallOutTaskModel);
        return addBatchCallOutTaskApi(apiCaseModel);
    }
}
@Slf4j
@Test
public class BatchAiManCallOutApiTest{
  
    @BeforeClass(alwaysRun = true)
    public void setUp() {}

    /**
     * 新增批量外呼任务
     */
    @Test
    @Parameters({"taskName","taskType"})
    public void addBatchAiCallOutTask(String taskName,String taskType) {
        AddCallOutTaskModel addCallOutTaskModel = new AddCallOutTaskModel(taskName,taskType);
      	
        String resp = new BatchCallOutApi().addBatchCallOutTaskApiBody(addCallOutTaskModel);
        JsonObject jsonObject = new Gson().fromJson(resp, JsonObject.class);

        String taskId = jsonObject.get("taskId").getAsString();
      
        Assert.assertEquals(taskName, CallOutTaskDAO.getAiTaskName(taskId), "新增批量外呼任务失败");
    }
  
  	/*
     * 启动批量外呼任务
     */
    @Test(dependsOnMethods = "listBatchAiCallOutTask")
  	@Parameters({"taskId"})
  	public void executeCallOutTask(String taskId) {
        ExecuteCallOutTaskModel executeCallOutTaskModel = new ExecuteCallOutTaskModel(taskId);
      	
        String resp = new BatchCallOutApi().executeCallOutTaskApiBody(executeCallOutTaskModel);
      
        Assert.assertTrue(resp,"启动外呼任务失败");
    }
    /**
     * 批量外呼-人机耦合任务查看详情
     */
    @Test(dependsOnMethods = "listBatchAiCallOutTask")
  	@Parameters({"taskId"})
    public void getBatchAiCallOutTaskInfo(String taskId) {
        NameValuePairModel nameValuePairModel = new NameValuePairModel("taskId", taskId);
        ArrayList<NameValuePairModel> nameValuePairModels = new ArrayList<>();
        nameValuePairModels.add(nameValuePairModel);
        String InfoResp = new BatchCallOutApi().getBatchCallOutTaskInfoApiBody(nameValuePairModels);

        JsonObject jsonObjectInfo = new Gson().fromJson(InfoResp, JsonObject.class);

        Assert.assertEquals(jsonObjectInfo.get("taskStatus").getAsString(), CallOutDAO.getAiTaskStatus(taskId), "查询人机耦合任务状态失败");
    }  
}

待继续完善。。。。