[英]How to include test classes with init in a Pytest test suite?
我正在嘗試使用頁面對象模型創建一個帶pytest和Selenium的測試套件來進行模式設計。 為了在我的測試中使用我的頁面類,我只是在我的TestClass __init__
方法中導入它們,因為它們需要使用驅動程序實例化。
我知道,默認情況下,pytest使用__init__
方法忽略類。 我也知道,通過閱讀這里可以配置pytest收集測試的位置。 是否也可以考慮使用__init__
進行類測試,而不是返回“空套件”錯誤?
@pytest.fixture(scope="session")
def driver_init(request):
from selenium import webdriver
driver = webdriver.Chrome()
session = request.node
page = PageFunctions(driver)
login_page = LoginPage(driver)
registration_page = RegistrationPage(driver)
for item in session.items:
cls = item.getparent(pytest.Class)
setattr(cls.obj, "driver", driver)
setattr(cls.obj, "page", page)
setattr(cls.obj, "login", login_page)
setattr(cls.obj, "registration", registration_page)
Pytest和Unittest有一些不同的約定。 將兩者混合在同一測試功能中通常是值得避免的。
如果您只使用Pytest,您可以將您的燈具作為參數傳遞給您的測試函數,例如:
import pytest
from selenium import webdriver
@pytest.fixture
def driver():
driver = webdriver.Chrome()
return driver
def test_func(driver):
# `driver` is found by pytest in the fixture above and
# automatically passed in
request = ... # Instantiate your request (not in your included code)
session = request.node
page = PageFunctions(driver)
login_page = LoginPage(driver)
registration_page = RegistrationPage(driver)
# Make some assertions about your data, e.g.:
assert page is not None
您沒有包含所有對象定義/導入,因此很難看到您嘗試通過測試完成的任務,但希望這可以讓您了解pytest約定。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.