【问题标题】:Performance profiling in acceptance/ functional tests验收/功能测试中的性能分析
【发布时间】:2016-06-03 09:28:50
【问题描述】:

我使用了一个简单的验收测试,它执行以下操作:

  • 加载网站的起始页;
  • 执行授权尝试;
  • 执行注销尝试;
  • 执行注册尝试。

每个功能都通过几个步骤进行测试,例如 -

...
$I->wantTo('Try to login with right credentials'); // step 1
$I->amOnPage('/user/login');                       // step 2
$I->fillField('#login-form-login','admin');        // step 3
$I->fillField('#login-form-password','admin');     // step 4
$I->click('#login-form button[type=submit]');      // step 5
$I->seeCurrentUrlEquals('/user/admin');            // step 6
...

我想知道每组步骤/单个步骤执行了多长时间。

由于所有功能都集中在一个测试中,因此运行此命令的结果会显示一份报告,显示整个测试所花费的时间。

codecept run acceptance --html

是否可以在 Codeception 中制作一组步骤(一些标记,可能是..)并显示执行这些组所花费的时间?

【问题讨论】:

    标签: selenium-webdriver profiling codeception acceptance-testing


    【解决方案1】:

    您可以将以下代码添加到FunctionalTester 或助手类中:

    class FunctionalTester extends \Codeception\Actor {
        ...
    
        private $firstTimeTag;
        private $secondTimeTag;
    
        public function markFirstTimeTag()
        {
            $this->firstTimeTag = new DateTime();
        }
    
        public function markSecondTimeTag()
        {
            $this->secondTimeTag = new DateTime();
        }
    
        public function calculateTheDiffFor($step)
        {
            echo $step.": ". round($this->secondTimeTag->getTimestamp() -
                    $this->firstTimeTag->getTimestamp(), 3). " s\n";
        }
        ...
    }
    

    然后在 Cept/Cest 文件中使用此操作:

    $I->wantTo('Try to login with right credentials'); // step 1
    
    $I->markFirstTimeTag();
    
    $I->amOnPage('/user/login');                       // step 2
    $I->fillField('#login-form-login','admin');        // step 3
    $I->fillField('#login-form-password','admin');     // step 4
    $I->click('#login-form button[type=submit]');      // step 5
    
    $I->markSecondTimeTag();
    $I->calculateTheDiffFor("Login attempt");
    
    $I->seeCurrentUrlEquals('/user/admin');            // step 6
    

    例如,可以在 Jenkins 的日志中看到输出。

    【讨论】:

      猜你喜欢
      • 2011-03-23
      • 2012-02-29
      • 1970-01-01
      • 2014-08-17
      • 1970-01-01
      • 1970-01-01
      • 2011-08-02
      • 2013-06-10
      • 2015-06-25
      相关资源
      最近更新 更多