【接口自动化测试】jmeter如何编写一个接口自动化项目的经验总结

  本年度主要的成果应该就是接口自动化的实现,实现归实现,不能保证以后还会发生变动。这次主要说说整个接口的测试和自己的写法总结把。

  我把一个计划分成两部分,一部分为比较独立的接口,一部分为测试用例。我们一般都是先实现了一个个接口的通过后,才会将所有接口结合在一起,写成我们需要的接口测试用例,而这测试用例就是我们以后只需要让他自动化去运行的测试用例。如图1:

     

 

 

   首先我们先确定一个线程组,这个线程组里设置通用的HTTP请求,一个控制器设置登录,一个控制器放置单接口、带登陆的请求头、自动化接口测试用例。

  自动化接口测试用例中,我们会设置一个用户定义变量,原本我是打算去掉,后来觉得这个用户定义变量,可以让我们自己决定是否需要。原因是1.我们都把变量全部写在取样器,虽然都能实现,但是维护上我们无法清晰的知道变量关系,我们可以通过用户定义变量的注释来清晰知道我们设置变量的意义;2.我们也可以将变量统一规范管理,不需要再接口一个个重复填写;3.当设置了用户自定义变量后,我们再取样器或者断言,都可以用过“${xxx}”来表示变量。例如:

 

 

 

beanshell取样器或者断言


String userId = "${userId_in}";

  

 

 

 

  接着写完变量后,我们添加一个Beanshell取样器,主要用来赋值。值得一提的是,使用取样器再控制器中是只执行一次,如果使用预处理器的话,是会执行一次或多次以上,这样会导致我们取随机值错误。取样器取随机值的写法也比较简单。(针对我这个项目,取得随机值)

beanshell取样器

int
userId = (int)(Math.random()*100); int userId1 = (int)(Math.random()*100); vars.put("userId_in",""+userId); vars.put("userId1_in",""+userId1);

  当我们要使用json提取器的时候,我们要注意json的路径格式。例如

json格式

{
"ex": null, "data": { "capital": "123456" } } 当我们取ex的值,应该写为 $.ex 当我们取capital的值,写为$.data.capital

  我们填完用户自定义变量和json提取器的值后,我们需要将定义变量的值填入接口,例如

   

    

 

   最后就是添加我们的beanshell断言,其实断言在主要体现在:

   Failure = false;

   FailureMessage ="xxxx";

     Failure = true;

    FailureMessage ="xxxx";

  附上本次接口自动化的简单断言结果:

  

beanshell断言

String inputUser = vars.get("inputUser"); String followUserId = vars.get("followUserId"); String userId = vars.get("userId_in"); String userId1 = vars.get("userId1_in"); if (inputUser.equals(userId1) && followUserId.equals(userId)){ Failure = false; FailureMessage = "接口与随机赋值一致"; log.info("inputUser"+inputUser+",userId1"+userId1+",followUserId"+followUserId+",userId"+userId); }else{ Failure = true; //log.info("inputUser"+inputUser+",userId1"+userId1+",followUserId"+followUserId+",userId"+userId); FailureMessage = "inputUser"+inputUser+ ",userId1"+userId1+",followUserId"+followUserId+",userId"+userId; }

 

posted @ 2020-10-26 14:09  Xiao世  阅读(473)  评论(0编辑  收藏  举报