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

pytest无报错返回退出码0却不执行测试用例也不启动浏览器如何解决?

核心原因

pytest执行时会按照默认命名规则自动扫描识别测试用例,你当前的代码不符合命名规范,导致pytest没有匹配到任何测试用例,因此无执行动作直接正常退出(返回exit code 0),同时代码中还存在其他语法错误会影响后续执行。

具体问题清单
  • 测试文件命名不符合规则:如果你的主运行文件未以test_开头或_test结尾,pytest不会将其识别为测试文件
  • 测试类命名不符合规则:pytest要求测试类必须以大写Test开头,你现有的testloginfunction类首字母为小写,不会被识别为测试类
  • 页面对象类方法命名冲突:TESTLOGIN类中的方法以test为前缀,会被pytest误判为测试方法,同时页面对象类本就不该加测试前缀
  • selenium语法错误:输入方法写为sendkeys,正确应为send_keys;find_element传入定位元组时没有解包,需要加*
  • 路径转义问题:conftest中chromedriver的Windows路径未加转义或原始字符串标记,可能导致路径识别失败
  • 运行方式错误:如果直接以普通Python脚本方式运行测试文件,不会触发pytest的用例执行逻辑
排查修复步骤
  1. 调整所有文件与类、方法的命名
    • 将你的主测试文件重命名为test_login.py
    • 测试类名修改为大写开头的TestLoginFunction
    • 页面对象类TESTLOGIN重命名为LoginPage,所有方法去掉test前缀,改为业务语义命名
  2. 修正代码语法错误
    • sendkeys改为send_keys
    • find_element传入定位元组时添加*解包
    • conftest中chromedriver路径添加r前缀标记为原始字符串:executable_path=r"D:\chrome\chromedriver_win32 (1)\chromedriver.exe"
  3. 调整运行方式
    • 不要直接右键运行测试文件,使用命令行执行pytest test_login.py -v查看执行日志
    • 如果使用PyCharm,进入设置将Python集成测试的默认运行器改为pytest
修正后核心代码示例

修正后的LoginPage.py(原Logintest.py)

from selenium.webdriver.common.by import By

class LoginPage:
    def __init__(self,driver):
        self.driver=driver

    loginbutton=(By.XPATH,"//a[@class='btn btn-default'][@id='loginbtn']")
    emailaddress =(By.XPATH,"//input[@name='login_email']")
    password=(By.XPATH,"//input[@name='login_password']")
    logintoaccount=(By.XPATH,"//a[@class='btn btnDanger']")

    def get_login_button(self):
        return self.driver.find_element(*self.loginbutton)
    def get_email_input(self):
        return self.driver.find_element(*self.emailaddress)
    def get_pwd_input(self):
        return self.driver.find_element(*self.password)
    def get_login_submit(self):
        return self.driver.find_element(*self.logintoaccount)

修正后的主测试文件test_login.py

import time
import pytest
from LoginPage import LoginPage
from baseclass import baseclass

class TestLoginFunction(baseclass):
    def test_sign(self):
        log = LoginPage(self.driver)
        log.get_login_button().click()
        time.sleep(5)
        log.get_email_input().send_keys("hello")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 20:39:02