Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
测试之间的PHPUnit Selenium页面_Selenium_Yii_Phpunit_Selenium Webdriver - Fatal编程技术网

测试之间的PHPUnit Selenium页面

测试之间的PHPUnit Selenium页面,selenium,yii,phpunit,selenium-webdriver,Selenium,Yii,Phpunit,Selenium Webdriver,我正在使用PHPUnit和Selenium在一个网站上运行自动测试。我已经创建了覆盖我网站大部分内容的测试,但它们运行得相当慢。运行它们需要25分钟,因此按照我的标准,这相当耗时:。通过对测试进行一些调整,我设法让它们工作得更快,主要的调整是从selenium开始 -browserSessionReuse始终重复使用同一窗口。测试运行的时间减少到16分钟 现在我正在尝试在测试页面,默认情况下,我的所有测试都会在那里进行,但是在测试之间,当一个测试完成,另一个打开selenium使用的firefo

我正在使用PHPUnit和Selenium在一个网站上运行自动测试。我已经创建了覆盖我网站大部分内容的测试,但它们运行得相当慢。运行它们需要25分钟,因此按照我的标准,这相当耗时:。通过对测试进行一些调整,我设法让它们工作得更快,主要的调整是从selenium开始 -browserSessionReuse始终重复使用同一窗口。测试运行的时间减少到16分钟

现在我正在尝试在测试页面,默认情况下,我的所有测试都会在那里进行,但是在测试之间,当一个测试完成,另一个打开selenium使用的firefox窗口,这是我的主网站。有没有办法控制这种情况?我宁愿不让它加载网站的主页,因为这也需要时间,没有这一点,我将进一步减少运行测试所需的时间

一些代码: 我从硒开始

java -jar selenium-server-standalone-2.38.0.jar -browserSessionReuse
phpunit.xml文件具有

<phpunit bootstrap="bootstrap.php"
    colors="false"
    convertErrorsToExceptions="true"
    convertNoticesToExceptions="true"
    convertWarningsToExceptions="true"
    stopOnFailure="false">

<selenium>
    <!--browser name="Internet Explorer" browser="*iexplore" /-->
    <browser name="Firefox" browser="*firefox" />
</selenium>

<filter>
  <whitelist processUncoveredFilesFromWhitelist="true">
    <directory suffix=".php">../models/</directory>
    <directory suffix=".php">../controllers/</directory>
    <directory suffix=".php">../components/</directory>
    <directory suffix=".php">../widgets/</directory>
    <directory suffix=".php">../../common/</directory>
    <exclude>
      <directory suffix=".php">../../common/modules/core/extensions/Html2Pdf/</directory>
      <directory suffix=".php">../../common/modules/core/extensions/bootstrap/</directory>
      <directory suffix=".php">../../common/modules/core/views/</directory>
      <directory suffix=".php">../../common/modules/core/widgets/views/</directory>
      <directory suffix=".php">../../common/modules/core/tests/</directory>
      <directory suffix=".php">../../common/modules/core/migrations/</directory>
      <directory suffix=".php">../../common/modules/core/components/Mandrill/</directory>
      <directory suffix=".php">../../common/modules/core/components/PHPMailer/</directory>
      <directory suffix=".php">../../common/widgets/views/</directory>
      <directory suffix=".php">../../common/lib/</directory>
      <directory suffix=".php">../widgets/views/</directory>
      <directory suffix=".php">../widgets/views/</directory>
      <file>../../common/modules/core/components/Mandrill.php</file>
    </exclude>
  </whitelist>

</filter>

<logging>
  <log type="coverage-html" target="reports" charset="UTF-8" lowUpperBound="20" highLowerBound="60" />
  <log type="coverage-clover" target="reports/coverage.xml" />
  <log type="junit" target="reports/phpunit.xml" />
</logging>
有人知道为什么在测试之间浏览器会进入网站主页吗?或者我如何控制这一切?我有大约100个测试,这意味着网页甚至被缓存了100次。多谢各位


还有其他让测试运行得更快的技巧吗?我想让它们在无头服务器上运行,但时间必须进一步缩短,因为无头服务器比我的计算机慢得多。

每次测试之前都会运行setUp方法,我相信您希望在测试运行之前覆盖setUpBeforeClass方法来设置浏览器。

我已经尝试过,我知道它是如何工作的。我的问题是,当一整套测试结束时,一个包含许多测试的文件结束了,因为我使用了browserSessionReuse,所以浏览器保持打开状态并转到。我从来没有告诉他去那个链接,实际上我不想让它去那个链接,因为那个是可能还没有完成的公共网站。即使完成了,也可能会加载需要时间加载的外部文件,这会减慢我的测试速度。
define('TEST_BASE_URL','http://local.app/admin/index-test.php/');

class WebTestCase extends \CWebTestCase
{
    const TIMEOUT = 2;
    public static $logged_in = false;
    protected $coverageScriptUrl = 'http://local.app/phpunit_coverage.php';
    /**
     * Sets up before each test method runs.
     * This mainly sets the base URL for the test application.
     */
    protected function setUp()
    {
        parent::setUp();
        $this->setBrowser('*firefox');
        $this->setBrowserUrl(TEST_BASE_URL);
    }
}