我想使用Pytest在Python中开发我的第一个Selenium框架。
由于我们不应该在所有测试类中都重复设置和拆卸方法,因此建议在conftest.py中将它们声明为fixture。
现在,我在conftest.py中有一个fixture方法(如屏幕截图所示),并将驱动程序对象引用传递给TestDemo类(其他屏幕截图)。
我的问题是,当我们使用driver.
时,我们会获得所有方法的建议,这非常用户友好。
但是当我尝试使用self.driver.
在TestDemo类下访问同一对象时,这些方法不可见。
有趣的是,如果我手动编写方法方法,则测试将按预期进行。
答案 0 :(得分:1)
您可以为driver
类的TestDemo
属性添加类型提示:
from typing import ClassVar
from selenium.webdriver import Chrome
class TestDemo:
driver: ClassVar[Chrome]
def test_e2e(self, setup):
...
当然,这与mypy
这样的静态类型检查器(如果您使用一个类型进行类型测试)不兼容,因为selenium
库本身不是类型输入的,但是对于IDE获取代码建议。
引入ClassVar
类型提示可在Visual Studio Code和Wing IDE中使用,但遗憾的是不适用于PyCharm,因为它缺乏对PEP 526的完全支持,请参见PY-20811)。要使用PyCharm完成代码,请对实例属性使用类型提示:
from typing import ClassVar
from selenium.webdriver import Chrome
class TestDemo:
driver: Chrome
def test_e2e(self, setup):
...