第五章 自动化框架规划及用例管理(下)
------phpunit 接口自动化测试系列
5.3 Source文件夹内容讲解
Source文件夹中存放的是配置文件,所要用到的图片文件资源等,目前我的Source文件夹下有如下文件:
(1)img文件夹:存放的是测试用例要用到的图片文件,里面有十张图片,以方便每次上传的时候实现随机调用。
(2)Config.xml配置文件。这是配置的是各个测试环境的调用host,这样我们可以通过修改不同的参数来切换环境。文件内容如下:
(3)result.txt和token.txt。这两个文本文件用来存放测试用例执行过程中的一些儿内容。Result.txt文件里存放的是测试用例执行失败的信息,token.txt文件中存放的是登录接口返回的token信息,用于其他的需要登录的接口,将Token封装到Http头中实现登录状态下调用接口。
5.4 TestCases文件夹内容
这个文件夹下存放的是具体的测试用例文件,每个测试用例文件是对一个接口的所有测试用例。当然测试用例文件也有一定的命名规则:一般是以接口名来头,以Test结尾。如:LoginTest.php.
下面我们以一个实例讲解一下公用函数的使用:以登录接口http://api.zhongchou.cn/user/login 为例。
对应的测试用例文件代码如下:
代码讲解:
首先引用我们的公用引用文件Require.php文件,将要引用的公用文件全包含进来。然后创建测试用例函数testlogin(),测试用例文件必须以test开头,否则phpunit不识别。在函数中初始化配置文件类$rc,数据操作类$dr,并且拼接出URL。
由于login接口是Post方式的,从对应的loginTest.xml数据文件中读取出“identity”和“password”参数对应的值。然后调用公共函数CurlOperation::Fetch()实现调用接口的操作,并将接口返回值json_decode(),然后判断返回值的errno是否与预期的一样(从数据文件中读取的预期值$dr->readnodevalue("login","serrno"))。
5.5 TestData文件夹内容
这个文件夹下存放的是对应测试用例的测试数据文件,一个接口对应一个数据文件,而一个测试用例对应一个数据节点。如login接口的测试用例文件是loginTest.php,对应的测试数据文件是loginTest.xml.其内容如下:
这个数据文件中对应两个测试用例,一个是login正常登录的测试数据,另一个是loginuer用户名错误的情况,当然这个测试用例数据省略了。以后我们要添加测试用例的时候,只需要在对应的测试数据文件中添加节点和相应的测试数据,在测试用例文件中添加对应的函数即可。
5.6 TestSuites文件夹的内容
TestSuites就是对测试用例的组织,因为PHPUNIT是利用PHPUnit_Framework_TestSuite来组织测试用例的,我们只需要创建一个类继承这个类,然后把相应的测试用例文件添加进来即可。
如我们创建OnlineRegression.php文件,内容如下:
我们将所有需要执行的测试用例文件,使用$this->addTestFile()函数添加到这个Suite中,然后右击这个文件,选择“Run ‘OnlineResTestSuite’”即可执行所有的测试用例。
当然可以根据运行环境啊,测试目的等不同来创建不同的suite文件的。例如,线上回归测试环境一般不能产生测试数据,所以有些儿post接口就不能在线上回归,此时线上回归的suite文件中就不能包含这样的接口。
5.7 本章小结
本章我们讲解了测试用例的架构规划,测试用例的组织。当然你可以自己规划一个喜欢的架构,只要方便执行,调试,出错的时候的定位准确就可以了。我自己喜欢现在的架构,经过我的实际工作中的实践,还是相当不错的。通过本章的学习,你可以把自己编写的单独的测试用例组织到一起,根据需要设计出合适的suite文件。下章我们将把这些测试用例集成到Jenkins中,实现无人值守的自动化运行。