【发布时间】:2013-07-21 23:57:18
【问题描述】:
我正在编写 selenium 测试,其中包含一组类,每个类都包含几个测试。每个类当前打开然后关闭 Firefox,这有两个后果:
- 超级慢,打开 firefox 需要的时间比在课堂上运行测试要长...
- 崩溃,因为在关闭 firefox 后,尝试从 selenium 快速重新打开它会导致“错误 54”
我可以通过添加睡眠来解决错误 54,但它仍然会非常慢。
所以,我想做的是在 所有 测试类中重用相同的 Firefox 实例。这意味着我需要在所有测试类之前运行一个方法,在所有测试类之后运行另一个方法。所以,'setup_class' 和 'teardown_class' 是不够的。
【问题讨论】:
-
将
scope设置为module还不够吗? -
我需要一个函数在最后运行一次,以关闭网络浏览器。我不想在每个类/模块之后关闭网络浏览器。我也不希望它永远不会被关闭。
-
那么很简单:使用
atexit并注册将关闭firefox 的函数,以便在解释器退出之前执行。 -
谢谢。如果可能的话,我更喜欢“py.test”的方式。
-
您可以使用module-level teardown and setup,我正在使用会话级别的拆解和设置,但不确定它们是否仍然可用。