zoukankan      html  css  js  c++  java
  • 第四章 接口自动化测试用例详解(上)

    ------phpunit 接口自动化测试系列

    经过前三章的学习,我们准备好了对接口进行自动化测试的相关知识。现在我们开始讲解接口自动化测试用例的编写。在本章编写的测试用例中,我们只针对具体的接口,编写自动化测试用例,而不对代码架构进行规划,那些儿进阶性的知识点,我们将在后面的章节讲解。先学习如何砌砖,然后我们再去建自己的高楼大厦。

    4.1 Get方式接口自动化用例

       Get方式的接口自动化相对来说比较简单,直接调用接口地址,把参数放到接口地址后面即可。下面我们以众筹网的接口实例来讲解:

    (1)接口文档

    按关键字搜索项目(GET):

    URLhttp://api.zhongchou.cn/deal/list

    参数:

    keyword,搜索关键字

    offset,拉取偏移,非必需,默认为0

    count,拉取个数,非必需,默认为10

    返回:项目Feed基础数据结构数组

      上面是一个搜索项目的接口文档,从文档中我们得知,这个接口是Get方式的,而且有三个参数,第一个参数是必需的,后两个参数是非必需的。返回值是Feed基础数据结构的数据(暂不要理会)。

    (2)Curl命令调用

    为了安全期间,我们调用测试环境下的数据,先绑定host: xx.xx.xx.xx api.zhongchou.cn。然后在终端下执行下面的命令:

    [root@n028 api]# curl http://api.zhongchou.cn/deal/list?v=1&keyword='测试'

    执行结果如图4.1.1所示:

     


                    图4.1.1 Curl调用接口返回值

    当然,上面在终端下的接口返回的结果是加密后的json字符串,不太容易看明白。

    (3)浏览器访问接口

    为了使用接口返回值更加清晰明了,我们要借助于一个浏览器插件JsonView。此插件可以直接解析接口返回的json字符串,方便明了,不过有个缺点:只能查看Get方式的接口。

    针对上面的例子,我们直接在浏览器的地址栏中输入http://api.zhongchou.cn/deal/list?v=1&keyword='测试',然后回车,就可以看到如图4.1.2所示:                       
         
         
                            图4.1.2浏览器访问接口

      这样访问接口,返回值是不是更加清晰了。对应返回值中包含的汉字也作了对应的解码。

    (4)PHP调用Get方式接口

       PHP对接口的调用有完整的一套函数,对于Get方式的接口,只需要调用函数file_get_contents()就能得到返回值。

    示例代码如下:

    class Demo extends PHPUnit_Framework_TestCase{
    
        public function testSearch()
    
        {
    
            $url="http://api.zhongchou.cn/deal/list?keyword=测试&v=1";
    
            $ret=file_get_contents($url);
    
            echo $ret;
    
        }
    
    }

    在JetBrains PhpStorm执行结果如图4.1.3所示:

        
                           图4.1.3 PHP调用Get接口执行结果

       这个结果和在终端下调用Curl命令结果是一样的,那有没有和浏览器下结果那样的呢?当然有了,因为这个接口返回值是json编码过的,我们调用函数json_decode()解码一下即可。解码后的结果见图4.1.4所示:

                
                                图4.1.4 对接口返回值进行解码输出

    (5)PHP编写Get接口自动化测试用例

    经过上面的四步分析,我们已经可以用php来调用接口了,可是这还不是完整的自动化测试用例。我们需要添加对返回结果的验证,如果和预期的一样,就成功,如果不一样就失败。

    完整的测试用例:

    class Demo extends PHPUnit_Framework_TestCase{
    
        public function testSearch()
    
    {
    
     
    
            $url="http://api.zhongchou.cn/deal/list?keyword=测试&v=1";
    
            $ch = curl_init();
    
            curl_setopt($ch, CURLOPT_URL, $url);
    
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    
            curl_setopt($ch, CURLOPT_HEADER, 0);
    
            $ret=curl_exec($ch);
    
            curl_close($ch);
    
            $data=json_decode($ret,true);
    
            //print_r($data);
    
            if(is_null($data)==false)
    
            {
    
                if($data['errno']=='0')
    
                {
    
                    $this->assertEquals('0',$data['errno']);//判断errno是否为0,此步为抛出执行通过
    
                    $index =strpos($data['data'][0]['name'],'测试');
    
                    $this->assertnotEquals(-1,$index);//判断结果是否包含关键字
    
                    print('接口/deal/list:搜索接口------------------OK'.'
    ');
    
                }
    
                else
    
                {
    
                    $this->assertEquals('0',$data['errno']);//抛出执行失败
    
                    print("接口/deal/list:搜索接口---------------Failure!"."
    ".$ret."
    ");
    
                }
    
            }
    
     
    
        }
    
    }

     我们为了判断结果,没有调用file_get_contents()函数,而改用了PHP调用接口的通用方法,如果不理解可以去网上查找相关讲解。而后我们加入了对接口返回值$data的判断:判断errno是否为0,查询结果中有没有包含关键字等。对于检测点的设置技巧,我们将在后面进阶篇中讲解。

    结过这样的测试用例代码,我们就可以执行测试用例了,并且测试用例会自己判断接口调用的结果。执行结果如图4.1.5所示,如果想查看接口的具体返回值 ,只需要取消//print_r($data);此句的注释即可。

       
                            图4.1.5 Get接口的执行结果

  • 相关阅读:
    openlayers wfs获取要素
    ArcEngine 直连连接SDE
    arcgis中的 style和serverstyle
    C#开源大全
    C#+ArcEngine 序列化和反序列化AE对象
    C# lazy加载
    Testing 理论测试(三)
    软件开发模型种类(7)
    Testing理论测试题(二)
    Testing 理论测试题(一)
  • 原文地址:https://www.cnblogs.com/eagleking0318/p/6520862.html
Copyright © 2011-2022 走看看