ava*_*sin 3 python pytest python-2.7
以下代码不会收集任何测试用例(我希望找到 4 个)。为什么?
import pytest
import uuid
from selenium import webdriver
from selenium.common.exceptions import TimeoutException
class TestClass:
def __init__(self):
self.browser = webdriver.Remote(
desired_capabilities=webdriver.DesiredCapabilities.FIREFOX,
command_executor='http://my-selenium:4444/wd/hub'
)
@pytest.mark.parametrize('data', [1,2,3,4])
def test_buybuttons(self, data):
self.browser.get('http://example.com/' + data)
assert '<noindex>' not in self.browser.page_source
def __del__(self):
self.browser.quit()
Run Code Online (Sandbox Code Playgroud)
如果我删除__init__和__del__方法,它将正确收集测试。但我如何设置和拆除测试呢?:/
pytest不会使用__init__方法收集测试类,可以在此处找到更详细的解释:如果定义了构造函数,则 py.test 将跳过测试类。
您应该使用固定装置来定义设置和拆卸操作,因为它们更强大、更灵活。
如果您的现有测试已经具有设置/拆卸方法并希望将它们转换为 pytest,这是一种简单的方法:
class TestClass:
@pytest.yield_fixture(autouse=True)
def init_browser(self):
self.browser = webdriver.Remote(
desired_capabilities=webdriver.DesiredCapabilities.FIREFOX,
command_executor='http://my-selenium:4444/wd/hub'
)
yield # everything after 'yield' is executed on tear-down
self.browser.quit()
@pytest.mark.parametrize('data', [1,2,3,4])
def test_buybuttons(self, data):
self.browser.get('http://example.com/' + data)
assert '<noindex>' not in self.browser.page_source
Run Code Online (Sandbox Code Playgroud)
更多详细信息可以在这里找到:自动使用装置和访问其他装置
| 归档时间: |
|
| 查看次数: |
6675 次 |
| 最近记录: |