0


接口自动化–自动编写自动化case

接口自动化–自动编写自动化case

  • 工作以来遇到和接触到很多的自动化测试框架。无论是什么样的自动化测试框架或者是自动化测试平台 原理是基本是一致的。都是通过驱动测试用例脚本来测试系统功能,并且记录下测试结果的一个过程。还有些平台会增加自动执行,并发,json转换形成测试用例,测试结果、测试数据持久化存储,等等的一些操作。
  • 基于对自动化的认知,测试用例都需要人工的去编写,没有什么捷径可走。使用框架的可以直接编写脚本,这种编码的方式灵活度很高。测试框架可以和开发语言一致,这样有两个优点: - 一、研发的代码有值得借鉴的一些方法可以直接使用,有助于了解项目代码。- 二、当遇到问题是,可以找研发求助,毕竟大多数的测试编码水平不如开发(少数测试大牛除外)。
  • 测试平台,编写测试用例直接在界面上就可以编写,优缺点也比较明显 - 优点:降低了自动化测试的门槛,测试人员不需要了解代码就可以做自动化测试。- 缺点:不灵活,遇到参数提取,参数公用等问题 需要定制很多规则。
  • 最近,做了一个工具。根据抓包工具或者chrome浏览器导出的.har文件,形成测试用例。 一个请求基础的参数 都获取到。根据用例的格式 可快速的形成一批测试用例。
  • 当然这也需要手动去调试,多场景问题解决不了。不过这也是一个快速自动化的解思路 代码附上(spock测试框架)
publicclassCreateCaseService{publicstaticvoidmain(String[] args)throwsHarReaderException{HarReader harReader =newHarReader();//读取har文件Har har = harReader.readFromFile(newFile("/Users/java/test.har"));//解析har文件内容for(HarEntry entry : har.getLog().getEntries()){//获取url,截取获得apiString[] url = entry.getRequest().getUrl().split ("31229/");String api = url[1];//获取response中的内容String text = entry.getResponse().getContent().getText();String encoding= entry.getResponse().getContent().getEncoding();//如果是base61编码,需要解码if("base64".equals(encoding)){
                text=newString(Base64.getDecoder().decode(text));}//新建用例given部分System.out.println("def \""+api+"\"() {");System.out.println("\n        given:");System.out.println("        HttpClientUtil httpClientUtil = new HttpClientUtil()");System.out.println("\n        when:");//判断是post or get 方法if("POST"== entry.getRequest().getMethod().toString()){System.out.println("        List<Param> paramList = new LinkedList<>()");for(HarPostDataParam data : entry.getRequest().getPostData().getParams()){System.out.println("        paramList.add(new Param(\""+data.getName()+"\", \""+data.getValue()+"\"))");}System.out.println("\n        def result = httpClientUtil.doPost(\""+ api +"\", headerMap,paramList,null)");}else{System.out.println("\n        def result = httpClientUtil.doGet(\""+ api +"\", headerMap, null)");}System.out.println("\n        then:");//校验接口内容//            System.out.println(text);try{for(Map.Entry<String,Object> entry1 : JSON.parseObject(text).entrySet()){//System.out.println("key值="+entry1.getKey());//System.out.println("对应key值的value="+entry1.getValue());System.out.println("        assert JSON.parseObject(result).containsKey("+entry1.getKey()+")");}}catch(Exception e){
                e.printStackTrace();}System.out.println("}");}}}
标签: 测试工具

本文转载自: https://blog.csdn.net/yanbingquan/article/details/126279649
版权归原作者 明天是spring 所有, 如有侵权,请联系我们删除。

“接口自动化–自动编写自动化case”的评论:

还没有评论