我有一个测试套件,其中包含很多selenium
的测试。现在,我有很多测试,他们需要一段时间,所以我正在努力加快这个过程。
部分问题是,每次测试之间关闭并重新打开firefox需要相当长的时间。我不明白它为什么要这么做。我意识到我们不希望登录会话之类的东西在测试之间延续,但是说我们有办法清除它。
所以,在任何测试运行之前,我想要一个驱动程序来打开firefox。所有测试都使用此驱动程序,并在每次测试之间清除会话。所有测试完成后,驱动程序应该关闭。
我不知道如何做到这一点。我已经在一个所有测试导入的文件中初始化了驱动程序,这将成功保持窗口打开,但我不知道如何在测试完成后关闭它。
是否可以通过某种方式捕获test_start
和test_end
个事件?我找不到文件了。
答案 0 :(得分:1)
在多个测试中保持单个Selenium驱动程序是一种全局状态。负责建立和拆除全球国家的实体是试验运行者。你可以这样做:
让您的实用程序库导出类似get_driver()
的函数,如果没有启动驱动程序则启动驱动程序或返回已有的驱动程序。
我认为你有一些不需要Selenium的测试(例如模型测试)。让测试需要司机调用get_driver()
。 (这不需要通过测试进行测试。如果测试类中的所有测试都需要驱动程序,那么setUp
可以进行一次调用。)这样就不会为不需要它的测试启动驱动程序。
让自定义测试运行器告诉实用程序库关闭它可能已运行的任何驱动程序。
Here是关于定义新测试运行器的文档。