无法在python中实例化unittest.Testcase的子类

tip*_*ipu 4 python unit-testing

我正在迭代一个文本文件.

文件文本文件中的每一行都是测试的名称.

我试图实例化测试类,但我不断收到此错误:

ValueError: no such test method in <class 'login_to_blog'>: runTest
Run Code Online (Sandbox Code Playgroud)

我正在做的代码在这里:

    test_name = line.replace("\n", "") #name of test file, class, and method _must_ be shared.
    module = __import__(test_name)
    test_class = getattr(module, test_name)
    suite.addTest(test_class())
Run Code Online (Sandbox Code Playgroud)

这是login_to_blog:

from selenium import selenium
import unittest, time, re

class login_to_blog(unittest.TestCase):
    def setUp(self):
        self.verificationErrors = []
        self.selenium = selenium("localhost", 4444, "*chrome", "http://blog/")
        self.selenium.start()

    def test_login_to_blog(self):
        sel = self.selenium
        sel.open("/")
        sel.type("signin_username", "jim")
        sel.type("signin_password", "jones")
        sel.click("//input[@value='Signin']")
        sel.wait_for_page_to_load("30000")
        try: self.failUnless(sel.is_text_present("your blog posts"))
        except AssertionError, e: self.verificationErrors.append(str(e))

    def tearDown(self):
        self.selenium.stop()
        self.assertEqual([], self.verificationErrors)

if __name__ == "__main__":
    unittest.main()
Run Code Online (Sandbox Code Playgroud)

重要的是要注意这些测试由他们自己通过命令行成功运行.

任何想法我如何实例化它们并从python代码中手动运行它们?

Mik*_*kel 8

查看PyUnit Suite文档,它说:

创建实例时,我们必须指定要运行的测试方法.我们通过在构造函数中传递方法名称来完成此操作:

    defaultSizeTestCase = WidgetTestCase("testDefaultSize")
    resizeTestCase = WidgetTestCase("testResize")
Run Code Online (Sandbox Code Playgroud)

再往下,我觉得你要找的东西是:

由于创建具有许多类似命名的测试函数的TestCase子类是一种常见模式,因此在unittest模块中提供了一个名为makeSuite的便捷函数,它构造了一个包含测试用例类中所有测试用例的测试套件: -

   suite = unittest.makeSuite(WidgetTestCase,'test')
Run Code Online (Sandbox Code Playgroud)

所以你要:

suite = unittest.makeSuite(test_class, 'test')
result = unittest.TestResult()
suite.run(result)
Run Code Online (Sandbox Code Playgroud)

或类似的东西.