python unittest中的属性错误

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

执行此单元测试时获得

[AttributeError:'BaseUnit'对象没有属性'driver']

import unittest
import redis
from selenium import webdriver
redis = redis.Redis(host='abc', port='123')
keys = redis.keys('*')
raw_baseunit = redis.get('test:baseunit')`enter code here`

class BaseUnit(unittest.TestCase):
        def setup(self):
                self.driver = webdriver.PhantomJS()

        def test(self):
                self.driver.get("myurl")
                self.driver.find_element_by_id('username').send_keys("ngeo_pur1")
                self.driver.find_element_by_id('password').send_keys("anything")
                self.driver.find_element_by_xpath('html/body/div[1]/div[3]/div/section/div/form/ul/li[5]/div[2]/div/input').click()
                self.driver.get("url")
                self.driver.find_element_by_partial_link_text("18757424").click()
                self.driver.find_element_by_xpath(".//*[@id='tabs']/nav/ul/li[2]/a/i").click()
                Actual = self.driver.find_element_by_xpath(".//*[@id='subcat_baseModelSection.baseModelChoice']/div/div[1]").text

                keys = redis.keys('*')
                raw_baseunit = redis.get('test:baseUnit')
                print "Actual Base Unit=",Actual
                print "Expected Base Unit=",raw_baseunit
                self.assetEquals(raw_baseunit,Actual)

        def teardown(self):
                self.driver.quit()

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

也尝试更改类名'BaseUnit'

python selenium-webdriver phantomjs
2个回答
1
投票

尝试为此修改安装程序类的名称。我刚刚阅读了文档,设置类是用大写的U编写的

def setUp(self):
        self.driver = webdriver.PhantomJS()

1
投票

您要在unittest.TestCase中覆盖的方法是unittest.TestCasesetUp(注意大写字母“ U”和“ D”),而不是tearDownsetup

您的全小写teardown方法在测试方法运行之前不会被调用(如果它完全被调用),因此,当setup方法尝试使用它时,self.driver属性不存在。

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