PHPUnit&Selenium----------(二)小试牛刀

来源:互联网 发布:英文软件界面翻译工具 编辑:程序博客网 时间:2024/06/06 20:23
上一节说了在Ubuntu安装PHPUnit和Selenium,这一节中我们正式开始小试牛刀,看看这个效怎么样o(∩∩)o...

题外话
先说一下我当前的环境
OS: Ubuntu 12.10
PHPUnit: 3.7.21
Selenium: selenium-server-standalone-2.33.0
Java: 1.7.0_15

PHP: 5.4.6


一、准备工作
首先运行Selenium,大家把jar包下载后随便放在一个地方就可以了,具体如下图所示:

图1 运行命令


图2 日志信息


二、逻辑说明
我现在做的这个测试是我们APP的一个【积分兑换】功能的自动化测试。

主要分一下三个大的步骤:
1.用户进行积分兑换申请;
2.通过用户积分申请的审核;
3.核对汇款信息,进行汇款。

说一下我们的预置和后置条件
1.申请前用户积分的总数,用户冻结积分数
2.通过审核后用户积分总数,用户冻结积分数
3.汇款成功后用户积分总数,用户冻结积分数

三、操作实例
1.设置测试中用到的常量和单元测试前的初始化工作和资源释放工作
var $user_id;//用户IDvar $order_id;//订单号var $op_id;//操作员IDvar $exchange_grade;//兑换积分数  /*** @description 每个单元测试前初始化*/public function setUp(){    $this->setBrowser('firefox');    $this->setBrowserUrl('http://www.baidu.com');    $this->user_id = 100166;    $this->op_id = 11;    $this->exchange_grade = 100;}/*** @description 每个单元测试运行后资源释放工作*/public function tearDown(){    unset($this->user_id);    unset($this->order_id);    unset($this->op_id);    unset($this->exchange_grade);}



2.根据积分兑换的三个步骤设置3个testCase

   /**     * 测试用例:积分申请     * 预置状态     *      1.用户积分总数不变,冻结积分数不变     * 执行操作     *      积分申请     * 预期结果     *      1.用户积分总数不变,冻结积分数增加     *      2.生成订单信息     */    public function testApply()    {        //提取预置数据        $preReturnJson = $this->getResultJson();        $preScoreJson = json_decode($preReturnJson);        $this->assertEquals($preScoreJson->code,0);        echo "预置用户".$this->user_id."积分读取成功。预置总积分值为:".$preScoreJson->user_info->grade_num.",预置冻结积分值为:".$preScoreJson->user_info->freeze_grade_value."\r\n";                //执行操作        $apply_exchange_json = '{"op_type":"1023","ver":"1111","user_id":"'.$this->user_id.'","task_id":"12","c_type":"1","card_num":"1367494852","bank_name":"%E5%BB%BA%E8%A1%8C","card_holder":"sdfsfsfd","exchange_grade":"'.$this->exchange_grade.'","exchange_rmb":100,"sid":"ipengsid"}';        echo "socre_exchange_api_1023:".$apply_exchange_json."\r\n";        $applyReturnJson = $this->getResultString($apply_exchange_json);        $applyScoreJson = json_decode($applyReturnJson);        $this->assertEquals($applyScoreJson->code,0);        echo "用户".$this->user_id."申请积分兑换成功"."\r\n";    }        /**     * 测试用例:订单审核通过     * 预置状态     *      1.用户积分总数不变,冻结积分数不变     *      2.订单审核状态不变,为未审核状态     * 执行操作     *      通过审核     * 预期结果     *      1.用户积分总数不变,冻结积分数不变     *      2.订单审核状态改变,为已审核状态     */    public function testCheck()    {        //读取申请成功后用户数据        $preReturnJson = $this->getResultJson();        $preScoreJson = json_decode($preReturnJson);        $this->assertEquals($preScoreJson->code,0);        echo "预置用户".$this->user_id."积分读取成功。预置总积分值为:".$preScoreJson->user_info->grade_num.",预置冻结积分值为:".$preScoreJson->user_info->freeze_grade_value."\r\n";                $order_info = $this->getOrderIdByUid(1);        $this->order_id = $order_info[0];        echo "订单数据读取成功,Order_id为:" . $this->order_id . "\r\n";        $check_pass = $this->checkOrderInfo();        $this->assertEquals($check_pass, 1);        echo "订单" . $this->order_id . "通过审核\r\n";    }        /**     * 测试用例:订单汇款     * 预置状态     *      1.用户积分总数不变,冻结积分数不变     *      2.订单审核状态不变,为等待汇款状态     * 执行操作     *      订单汇款     * 预期结果     *      1.用户积分总数减少,冻结积分数减少     *      2.订单审核状态改变,为已汇款状态     */    public function testRemit()    {        $order_info = $this->getOrderIdByUid(2);        $_order_id  = $order_info[0];        $_op_id = $this->op_id;        $_exchange_grade = $this->exchange_grade;        $pass_input_json = '{"op_type":"1030","ver":"","user_id":"' . $this->user_id . '","task_id":"","c_type":"0","exchange_grade":"'.$_exchange_grade.'","exchange_result":"0","op_id":"'.$_op_id.'","order_id":"'.$_order_id.'","state":"4"}';        echo "remit_api_1030:" . $pass_input_json . "\r\n";        $pass_return_json = $this->getResultString($pass_input_json);        $pass_info = json_decode($pass_return_json);        $this->assertEquals($pass_info->code, 4);        echo "后置用户" . $this->user_id . "积分兑换成功,兑换积分为" . $order_info[2] . "\r\n";        $afterReturnJson = '{"op_type":"1029","user_id":"' . $this->user_id . '","auth_key":"e10adc3949ba59abbe56e057f20f883e"}';        $afterScoreJson = json_decode($this->getResultString($afterReturnJson));        $this->assertEquals($afterScoreJson->code, 0);        echo "后置用户" . $this->user_id . "积分读取成功。后置总积分值为:" . $afterScoreJson->user_info->grade_num . ",后置冻结积分值为:" . $afterScoreJson->user_info->freeze_grade_value . "\r\n";    }

注:中间有一些获取必要信息的方法,可能设置敏感信息,所以就不贴代码啦!
  
  

四、运行测试用例

运行过程中,浏览器(PS:我用的Firefox)会闪现好多次,其实整个过程也就是模拟用户操作的一个过程。具体结果如下图:

图3 用例运行结果


五、结束语
因为我也是刚接触自动化测试,如果有不对的地方请包涵,欢迎大家一起讨论。


原创粉丝点击