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

使用Selenium+unittest编写测试用例时遭遇AttributeError问题求助

问题解决方法

第一个错误的原因与修复

你遇到的AttributeError: 'PythonOrgSearch' object has no attribute 'driver',核心原因是unittest框架要求初始化方法必须命名为setUp(大写U),而你写的是小写的setup。unittest只会自动调用符合命名规范的setUp方法,你的setup根本没被执行,self.driver自然没有被初始化,所以tearDown里调用self.driver.close()会报错。

第二个错误的原因

你试图通过重写__init__方法来修复问题,这是错误的做法。unittest.TestCase的构造函数会处理测试方法的元数据(比如_testMethodName),你重写__init__后没有调用父类的构造函数,破坏了框架的内部流程,导致抛出AttributeError: 'PythonOrgSearch' object has no attribute '_testMethodName'。

正确的代码实现

修正setUp的拼写,移除自定义的__init__方法,同时注意ChromeDriver路径的转义问题(用原始字符串或双反斜杠),另外你的路径里chromdriver.exe少了一个e,应该是chromedriver.exe:

import unittest 
from selenium import webdriver


class PythonOrgSearch(unittest.TestCase):

    def setUp(self):
        # 使用原始字符串避免转义问题,同时修正驱动文件名
        self.driver = webdriver.Chrome(r"C:\Program Files (x86)\chromedriver.exe")
        self.driver.get("http://www.python.org")

    def test_example(self):
        print("test")
        assert True

    def not_a_test(self):
        print('this wont print')

    def tearDown(self): 
        self.driver.close()

if __name__ == "__main__":
    unittest.main()

额外注意事项

  • 只有以test_开头的方法才会被unittest识别为测试方法,所以not_a_test不会被执行,这是正常现象。
  • 如果ChromeDriver的路径配置有问题,可能会抛出找不到驱动的错误,确保你的ChromeDriver版本和Chrome浏览器版本匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 13:20:32