codeception测试框架(一)

开发资源

  1. php(下载WampServer集成php mysql apache等)
  2. composer(php依赖包管理工具,集成了codeception)
  3. yii2(https://www.yiichina.com/doc/guide/2.0,包含codeception和yii2的安装使用指南)

wampServer和composer的windows版资源:链接:https://pan.baidu.com/s/1JENZVCQrllpcwd_Yj24PMg 提取码:a1hq 
phpstorm2019资源:链接:https://pan.baidu.com/s/138wO7G1teWpycuZzPpjG4A  提取码:q0i3
codeception与Yii2集成的测试方法文档:https://codeception.com/docs/modules/Yii2.html#seeRecord

创建基本测试套件 (涵盖了单元、功能、验收测试)
codecept bootstrap
Api测试需要另外创建套件
codecept g:suite api
运行测试 
codecept run 
运行详细输出
codecept run api xxx -vvv
codecept run api xxx --steps
生成测试报告,生成HTML和XML报告。报告将存储在tests/_output/目录中
codecept run --steps --xml --html

codeception全局配置

配置需要用到的Actor,套件配置类似

文件配置:codeception.yml
actor:FunctionalTester/ApiTeser/UnitTester/AcceptanceTester
modules:
    config:
        -Yii2:
            configFile:'config/test.php'
    enable:
        -PhpBrower:
            url:xxx  //网页可以用phpBrower虚拟浏览器
        -WebDriver:
            url:xxx
            brower:chrome //真实浏览器
        -Db:
            dsn:xxx  //数据库声明用db模块
使用WebDriver、PhpBrower可以加个REST,使用depends解决冲突

Codeception语法

动作类
$I->click('Login');
$I->fillField('#input-username', 'John Dough');
断言类
$I->see('Welcome');
$I->dontSeeElement('#error-message');
抓取类
$method = $I->grabAttributeFrom('#login-form', 'method');
$I->assertEquals('post', $method);

包含yii集成的codeception测试函数的介绍
'https://codeception.com/docs/modules/Yii2.html'

API测试

SOAP和REST作为标准,在REST/SOAP Web服务是通过HTTP访问的标准方法

api套件配置
actor: ApiTester
modules:
    enabled:
        - REST:
            url: 'http://serviceapp/api/v1/'
            depends: PhpBrowser
class SigninCest
{
    function _before(AcceptanceTester $I)
    {//测试前运行的操作,数据库的表更新...}
    
    public function _after(AcceptanceTester $I)
    {        }

    public function tryToTest(AcceptanceTester $I)
    {//测试用例}
}

Api自动化实操:

同一个接口有多个场景可以用多个function来覆盖,变更传参等即可。

class   UserImportCest
{

    const URL = 'fbcc/user/import-user'; //接口url
    static $TABLES = [ //表名称
        'sys_log_opt_v2',
        'fbcc_user',
        'fbcc_user_batch',
    ];


    public function _before(ApiTester $I) //ApiTester是codeception生成的apiActor
    {
        $I->runSql(static::$TABLES);  //执行sql
    }

    public function normalFileTest(ApiTester $I)
    {
        //参数
        $params = [
            'batch_id' => '2',
            'language' => 'en,en-US',
            'automatic_timezone' => '1',
            'domain_name' => 'facebook.com'
        ];
        //需要上传的文件的绝对路径
        $files = ['user_file' => 'tests/_data/upload_files/normal_import_user_file.xlsx'];
        //登录Actor
        $I->loginSuperAdmin();
        //给api传参,这里用的是POST,还有GET等
        $I->sendPOST(static::URL, $params, $files);
        //可以查看response的json数据包含是否有你想要的数据
        $I->seeResponseContainsJson(["code" => 0, 'msg' => 'Success']);

        $fbccUserModel = 'app\modules\common\models\fbcc\FbccUserModel';
        //查数据库的内容,看是否已经插入或者修改等
        $I->seeRecord($fbccUserModel, [
            'login_user' => 'exceed1',
            'ip' => '118.136.48.87',
            'original_ip' => '118.136.48.87',
        ]);
        //查看日志
        $I->seeLog('import-user');
    }
}

同一个接口,如果方法可以复用可以用循环来简化代码。

class GetUserCountCest
{
    const URL = 'fbcc/user/get-user-count';
    static $TABLES = [
        'fbcc_user'
    ];
    public function _before(ApiTester $I)
    {
        $I->loginSuperAdmin();
    }
    public function testGetUserCount(ApiTester $I)
    {
        $param = [
            '1' => [],
            '2' => ['login_user' => 'gmail'],
            '3' => ['login_status' => '1'],
            '4' => ['area' => 'ID'],
            ];
        $resp = [
            '1' => '{"data":{"total":"7"},"code":0,"msg":"Success"}',
            '2' => '{"data":{"total":"5"},"code":0,"msg":"Success"}',
            '3' => '{"data":{"total":"5"},"code":0,"msg":"Success"}',
            '4' => '{"data":{"total":"6"},"code":0,"msg":"Success"}',
        ];
        foreach ($param as $key => $value) {
            $I->wantTo("Get User Count".$key);
            $I->runSql(static::$TABLES);
            $I->verifyResp(static::URL, 'get', $value, 200, $resp[$key]);
        }
    }
}

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值