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的用例执行逻辑
排查修复步骤
- 调整所有文件与类、方法的命名
- 将你的主测试文件重命名为
test_login.py - 测试类名修改为大写开头的
TestLoginFunction - 页面对象类
TESTLOGIN重命名为LoginPage,所有方法去掉test前缀,改为业务语义命名
- 将你的主测试文件重命名为
- 修正代码语法错误
sendkeys改为send_keysfind_element传入定位元组时添加*解包- conftest中chromedriver路径添加
r前缀标记为原始字符串:executable_path=r"D:\chrome\chromedriver_win32 (1)\chromedriver.exe"
- 调整运行方式
- 不要直接右键运行测试文件,使用命令行执行
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
相关产品推荐
相关产品推荐

