gpt4 book ai didi

selenium - setUp()、tearDown() 中的浏览器 session ,没有每个测试用例设置?

转载 作者:行者123 更新时间:2023-12-04 14:34:23 26 4
gpt4 key购买 nike

我以前使用 ruby​​/rspec 编写了一些 selenium 测试,发现它非常强大。现在,我将 Selenium 与 PHPUnit 一起使用,但我缺少一些东西,这可能只是因为缺乏经验。在 Ruby/RSpec 中,我习惯于能够为每个测试用例定义一个“全局”设置,除其他外,我在其中打开浏览器窗口并登录到我的站点。

我觉得这里有点缺乏 PHPUnit,因为 1) 你只有 setUp()tearDown() , 在每个单独的测试之前和之后运行,并且 2) 似乎实际的浏览器 session 设置在 setUp() 之间和测试,之前关闭tearDown() .

这会使测试本身更加困惑,因为您必须明确地在开始时打开页面,并在最后执行清理。在每一次测试中。为每个单独的测试关闭和重新打开浏览器似乎也是不必要的开销,而不仅仅是返回登录页面。

有没有其他方法可以实现我正在寻找的东西?

最佳答案

我过去所做的是创建一个 protected 方法,该方法为 session 返回一个对象,如下所示:

protected function initBrowserSession() {
if (!$this->browserSession) {
$this->setBrowser('*firefox');
$this->setBrowserUrl('http://www.example.com/');
//Initialize Session
$this->open('http://www.example.com/login.php');
// Do whatever other setup you need here
}
$this->browserSession = true;
}

public function testSomePage() {
$this->initBrowserSession();
//Perform your test here
}

你真的不能用 setupBefore/AfterClass函数,因为它们是静态的(因此您将无法访问该实例)。

现在,话虽如此,我会质疑你这样做的动机。通过在测试之间重复使用 session 的测试,您引入了在测试之间产生副作用的可能性。通过为每个测试重新打开一个新 session ,您将影响隔离到测试的影响。谁在乎重新打开浏览器的性能(至少在合理范围内)?这样做实际上会增加测试的有效性,因为它是孤立的。再说一次,对于测试长时间的 session 可能有话要说。但如果是这样的话,我会把它作为一个单独的测试用例/类来进行单独的功能测试......

关于selenium - setUp()、tearDown() 中的浏览器 session ,没有每个测试用例设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5496938/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com