属性错误:模块“conftest”没有属性“driver”

问题描述 投票:0回答:1

我正在尝试运行测试,但我遇到了这个错误,这是我的代码,有人可以告诉我错误在哪里吗?

会议测试

import pytest
from selenium import webdriver

driver:webdriver.Remote


@pytest.fixture
def setup_teardown():
    #setup
    global driver
    driver = webdriver.Chrome()
    driver.implicitly_wait(5)
    driver.maximize_window()
    driver.get("https://www.saucedemo.com/v1/")

    #run test
    yield

    #teardown
    driver.quit()

测试登录

import pytest
from selenium.webdriver.common.by import By
import conftest


@pytest.mark.usefixture("setup_teardown")
class TestCT01:
    def test_ct01_login_valido(self):
        driver = conftest.driver
        driver.find_element(By.ID, "user-name").send_keys("standard_user")
        driver.find_element(By.ID, "password").send_keys("secret_sauce")
        driver.find_element(By.ID, "login-button").click()
        assert driver.find_element(By.CLASS_NAME, "product_label").is_displayed()

错误 在此输入图片描述

我正在尝试运行测试,但我遇到了这个错误

pytest
1个回答
0
投票

您的标记末尾缺少“s”,这就是您的测试代码未触发夹具来启动驱动程序的原因。

将标记更改为:

@pytest.mark.usefixtures("setup_teardown")
class TestCT01:

但是,这是我的建议,更适合您的情况:

1-您不需要将conftest.py导入到您的测试代码中。

2-您不需要驱动程序的全局变量

conftest.py

import pytest
from selenium import webdriver


@pytest.fixture
def get_driver():
    #setup
    driver = webdriver.Chrome()
    driver.implicitly_wait(5)
    driver.maximize_window()
    driver.get("https://www.saucedemo.com/v1/")

    #run test
    yield driver

    #teardown
    driver.quit()

测试登录.py

import pytest
from selenium.webdriver.common.by import By


class TestCT01:

    def test_ct01_login_valido(self, get_driver):
        get_driver.find_element(By.ID, "user-name").send_keys("standard_user")
        get_driver.find_element(By.ID, "password").send_keys("secret_sauce")
        get_driver.find_element(By.ID, "login-button").click()
        assert get_driver.find_element(By.CLASS_NAME, "product_label").is_displayed()

© www.soinside.com 2019 - 2024. All rights reserved.