我尝试在通常的类中使用assertEqual,并且不能从unittest.TestCase中调用方法
class MyPages(unittest.TestCase):
@classmethod
def setUpClass(cls):
basetest.BaseTest().open_browser('firefox')
basetest.BaseTest().login()
def testCreateFolder(self):
print "111111111"
def testCreateFolder1(self):
print "222222222"
@classmethod
def tearDownClass(cls):
basetest.BaseTest().close_browser()
在我的BaseTest中,我想用文本断言登录。
class BaseTest():
def open_browser(self, browser):
self.driver = config.browser[browser]
global driver
driver = self.driver
driver.get(config.url)
def login(self):
# Go to authorisation page
driver.find_element_by_xpath(link.header["Login_button"]).click()
# Get text from LOGIN label and assert it with expected text
login_text = driver.find_element_by_xpath(link.author_popup["Login_label"])
login_text.get_attribute("text")
print login_text.text
unittest.TestCase().assertEqual(1, 1, "helllllllo")
unittest.TestCase().assertEqual(login_text.text, text.author_popup["Login"],
"Wrong label on log in auth popup. Expected text:")
结果我有以下内容:
Error
Traceback (most recent call last):
File "D:\python\PD_Tests\pages\my_pages.py", line 17, in setUpClass
basetest.BaseTest().login()
File "D:\python\PD_Tests\tests\basetest.py", line 25, in login
unittest.TestCase().assertEqual(1, 1, "helllllllo")
File "C:\Python27\lib\unittest\case.py", line 191, in __init__
(self.__class__, methodName))
ValueError: no such test method in <class 'unittest.case.TestCase'>: runTest
如果我的类不是unittest.TestCase,我可以在我的方法中使用assertEqual方法吗?
答案 0 :(得分:1)
我认为有办法做你想做的事,但这有点像黑客。
TestCase
类的构造函数将方法名称作为参数,此参数的默认值为"runTest"
。此构造函数的docstring如下所示:
创建将在执行时使用命名测试方法的类的实例。如果实例没有具有指定名称的方法,则引发ValueError。
希望这可以解释您所看到的错误消息。
如果要创建TestCase
只是为了使用断言方法,您可以传入其他方法的名称,例如__str__
。这将使您完成构造函数中的检查:
Python 2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from unittest import TestCase
>>> t = TestCase("__str__")
>>> t.assertEqual(3, 5)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python27\lib\unittest\case.py", line 511, in assertEqual
assertion_func(first, second, msg=msg)
File "C:\Python27\lib\unittest\case.py", line 504, in _baseAssertEqual
raise self.failureException(msg)
AssertionError: 3 != 5
>>> t.assertEqual(3, 3)
>>>
只要您不尝试运行TestCase,这应该不是问题。
答案 1 :(得分:1)
来自BaseTest
的{{1}}是否有特殊原因不?
我的解决方案是拥有unittest.TestCase
类,该类继承自SeleniumTestcase
并提供unittest.TestCase
和setUp
方法。只需确保在创建tearDown
实例时知道config
。