You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

添加pytest到自动化测试时出现‘collected 0 items’提示的问题

解决pytest提示‘collected 0 items’未执行测试用例的问题

核心问题

你把测试逻辑写在了pytest fixture装饰的函数里,但fixture的作用是提供测试依赖(比如初始化浏览器、准备测试数据),pytest不会把fixture函数识别为测试用例。pytest仅会自动识别以test_开头的函数(或类中以test_开头的方法)作为测试用例。


修正方案

方案一:直接修改测试函数命名(简单场景)

去掉@pytest.fixture()装饰器,将函数名改为test_前缀,让pytest识别为测试用例:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.edge.service import Service
import pytest

def test_wrong_login():
    website = 'https://www.saucedemo.com'
    path =  "/Users/Bernardo Cabrera/PycharmProjects/Project/resource/msedgedriver.exe"

    options = webdriver.EdgeOptions()
    options.add_experimental_option("Detach", True)

    service = Service(executable_path=path)
    driver = webdriver.Edge(service=service)
    driver.get(website)
    driver.implicitly_wait(5)
    driver.maximize_window()

    username= driver.find_element(By.XPATH, '//*[@id="user-name"]')
    password= driver.find_element(By.XPATH, '//*[@id="password"]')
    login= driver.find_element(By.XPATH, '//*[@id="login-button"]')

    username.send_keys("username")
    password.send_keys("password")
    login.click()

    badicon = driver.find_element(By.CLASS_NAME, 'error-button')
    assert badicon.is_displayed()

    driver.save_screenshot('FailedLogin')
    driver.quit()  # 测试完成后关闭浏览器,避免资源泄漏

方案二:抽离Fixture复用依赖(推荐多测试场景)

将浏览器初始化逻辑抽离为独立的fixture,测试函数通过参数调用fixture,这样多个测试用例可以复用浏览器实例:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.edge.service import Service
import pytest

@pytest.fixture()
def driver():
    website = 'https://www.saucedemo.com'
    path =  "/Users/Bernardo Cabrera/PycharmProjects/Project/resource/msedgedriver.exe"

    options = webdriver.EdgeOptions()
    options.add_experimental_option("Detach", True)

    service = Service(executable_path=path)
    driver = webdriver.Edge(service=service)
    driver.get(website)
    driver.implicitly_wait(5)
    driver.maximize_window()
    yield driver  # 返回driver给测试用例,测试执行完后执行后续代码
    driver.quit()  # 自动关闭浏览器

def test_wrong_login(driver):
    username= driver.find_element(By.XPATH, '//*[@id="user-name"]')
    password= driver.find_element(By.XPATH, '//*[@id="password"]')
    login= driver.find_element(By.XPATH, '//*[@id="login-button"]')

    username.send_keys("username")
    password.send_keys("password")
    login.click()

    badicon = driver.find_element(By.CLASS_NAME, 'error-button')
    assert badicon.is_displayed()

    driver.save_screenshot('FailedLogin')

额外检查点

  • 测试文件命名需符合pytest规则:文件名以test_开头(如test_login.py)或以_test.py结尾
  • 执行pytest时确保在正确目录,或指定测试文件路径,比如:pytest test_login.py -v

内容的提问来源于stack exchange,提问作者Bernardo Cabrera

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 12:57:09