Django 测试:不要在每次测试后关闭 selenium 驱动程序

Django tests: Don't close selenium driver after each test

我有一个测试套件,其中包含 selenium 的大量测试。现在,我有很多测试,他们需要相当长的时间,所以我正在努力加快这个过程。

部分问题是 selenium 在每次测试之间关闭和重新打开 firefox 需要相当长的时间。我也不明白为什么会这样。我意识到我们不希望登录会话之类的东西在测试之间延续,但是我们有办法清除它。

因此,在进行任何测试之前 运行,我需要一个驱动程序来打开 firefox。所有测试都使用此驱动程序,并且在每次测试之间清除会话。所有测试完成后,驱动程序应该关闭。

我不确定如何完成此操作。我已经在所有测试导入的文件中初始化驱动程序,这将成功地保持 window 打开,但我不知道如何在测试完成后关闭它。

有什么方法可以捕获 test_starttest_end 事件之类的吗?我找不到文档。

在多个测试中保持单个 Selenium 驱动程序是一种全局状态。负责设置和拆除全局状态的实体是测试运行器。你可以这样做:

  1. 让您的实用程序库导出类似 get_driver() 的函数,如果没有启动驱动程序或 returns 已经存在的驱动程序,它会启动一个驱动程序。

  2. 我假设您有一些不需要 Selenium 的测试(例如模型测试)。让确实需要驱动程序调用的测试 get_driver()。 (这不需要逐个测试。如果测试 class 中的所有测试都需要一个驱动程序,那么 setUp 可以进行一个调用。)这样,驱动程序就不会为不需要的测试启动不需要它。

  3. 让自定义测试运行程序告诉实用程序库关闭它可能具有的任何驱动程序运行。

Here 是关于定义新测试运行器的文档。