属性错误:"文本测试结果"对象没有属性"assertIn"



我正在尝试一些Python与硒,我在simpleUsageUnittest.py中定义了一些测试:

import unittest
import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
class PythonOrgSearch(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Firefox()
#   @unittest.skip("skip test_001")
    def test_001_search_in_python_org(self):
        driver = self.driver
        driver.get("http://www.python.org")
        self.assertIn("Python", driver.title)
        elem = driver.find_element_by_name("q")
        elem.send_keys("selenium")
        elem.send_keys(Keys.RETURN)
#   @unittest.skip("skip test_002")
    def test_002_goole_and_stack_test_test(self):
        driver_g = self.driver
        driver_g.get("http://www.google.com")
        self.assertIn("Google", driver_g.title)
        body_g = driver_g.find_element_by_tag_name("body")
        body_g.send_keys(Keys.CONTROL + 't')
        driver_g.get("http://stackoverflow.com")
        self.assertIn("Stack", driver_g.title)
    def tearDown(self):
        self.driver.close()
if __name__ == "__main__":
    unittest.main(warnings = 'ignore')

单独这组工作完美,但然后我试图创建一些套件,testTestSuite.py:

import unittest
import simpleUsageUnittest
import sys
def suite():
    testSuite = unittest.TestSuite()
    testSuite.addTest(simpleUsageUnittest.PythonOrgSearch.setUp)
    testSuite.addTest(simpleUsageUnittest.PythonOrgSearch.test_001_search_in_python_org)
    testSuite.addTest(simpleUsageUnittest.PythonOrgSearch.test_002_goole_and_stack_test_test)
    testSuite.addTest(simpleUsageUnittest.PythonOrgSearch.tearDown)
    return testSuite
if __name__ == "__main__":
    result = unittest.TextTestRunner(verbosity=2).run(suite())
    sys.exit(not result.wasSuccessful())

而运行这个套件,我遇到AttributeError: 'TextTestResult'对象没有属性'assertIn',因为我不完全理解它,我无法修复它;)如果我在simpleUsageUnittest.py中删除assertIn行,那么它就会再次工作,但这当然不是我想要做的!也断言在Python 2.7不为我工作,例如assertIn不是一个很大的帮助,因为我使用Python 3.3.5和硒2.41.0。有人能给我解释一下吗?或者直接使用什么属性来保存断言?;)

全面跟踪:

C:UserszzzPythonselenium_tutorial>python testTestSuite.py
Traceback (most recent call last):
  File "testTestSuite.py", line 14, in <module>
    result = unittest.TextTestRunner(verbosity=2).run(suite())
  File "C:Python33libunittestrunner.py", line 168, in run
    test(result)
  File "C:Python33libunittestsuite.py", line 67, in __call__
    return self.run(*args, **kwds)
  File "C:Python33libunittestsuite.py", line 105, in run
    test(result)
  File "C:UserszzzPythonselenium_tutorialsimpleUsageUnittest.py", line
 18, in test_001_search_in_python_org
    self.assertIn("Python", driver.title)
AttributeError: 'TextTestResult' object has no attribute 'assertIn'
<<p> 解决方案/strong>

好的,它看起来像在我的testsuite .py,而执行,TextTestRunner对待"自我。asserIn"在simpleUsageUnittest.py作为self == TextTestRunner不作为self == TestCase(我不知道我是否解释/正确理解它,但这就是我如何看待它;))。这里修复了testTestSuite.py:

import unittest
import simpleUsageUnittest
import sys
def suite():
    testSuite = unittest.TestSuite()
    testSuite.addTest(simpleUsageUnittest.PythonOrgSearch('test_001_search_in_python_org'))
    testSuite.addTest(simpleUsageUnittest.PythonOrgSearch('test_002_goole_and_stack_test_test'))
    return testSuite
if __name__ == "__main__":
    result = unittest.TextTestRunner(verbosity=2).run(suite())
    sys.exit(not result.wasSuccessful())

'setUp'和'tearDown'丢失了,因为它们在每次'test'之后被自动调用。

SOLUTION

好的,它看起来像在我的testsuite .py,而执行,TextTestRunner对待"自我。asserIn"在simpleUsageUnittest.py作为self == TextTestRunner不作为self == TestCase(我不知道我是否解释/正确理解它,但这就是我如何看待它;))。这里修复了testTestSuite.py:

import unittest
import simpleUsageUnittest
import sys
def suite():
    testSuite = unittest.TestSuite()
    testSuite.addTest(simpleUsageUnittest.PythonOrgSearch('test_001_search_in_python_org'))
    testSuite.addTest(simpleUsageUnittest.PythonOrgSearch('test_002_goole_and_stack_test_test'))
    return testSuite
if __name__ == "__main__":
    result = unittest.TextTestRunner(verbosity=2).run(suite())
    sys.exit(not result.wasSuccessful())

'setUp'和'tearDown'丢失了,因为它们在每次'test'之后被自动调用。

最新更新