我正在使用PHPUnit和Selenium在网站上运行自动测试。我创建的测试涵盖了我的大多数网站,但它们运行得相当慢。运行它们需要25分钟,所以它非常耗时(无论如何我的标准:))。通过对测试进行一些调整,我设法让它们更快地工作,主要的调整是用硒开始硒 -browserSessionReuse一直重用同一个窗口。测试运行的时间减少到16分钟。
现在我试图在http://local.app/admin/测试页面,默认情况下我的所有测试都在那里,但是在测试之间(当1个测试完成而另一个打开时)selenium使用的firefox窗口去了到http://local.app/,这是我的主要网站。有没有办法控制这个?我宁愿不加载网站的主页,因为这也需要时间,如果没有这个,我将进一步减少运行测试所需的时间。
部分代码:
我用
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>
我使用Yii进行开发。所以我有一个名为WebTestCase.php的文件,我的所有功能测试都扩展了。 WebTestCase文件的内容是。
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);
}
}
任何人都知道为什么测试之间的浏览器会进入网站的主页?或者我如何控制这个?我有大约100个测试,这意味着主页(甚至缓存)加载了100次。谢谢。
让测试运行得更快的其他任何提示?我想让它们在无头服务器上运行,时间必须进一步降低,因为无头服务器比我的计算机慢得多。
答案 0 :(得分:0)
setUp()方法在每次测试之前运行,我相信你想覆盖setUpBeforeClass()方法,在测试运行之前设置浏览器