无法跳过 Tornado python 测试类中的某些方法

时间:2021-01-21 08:21:12

标签: python tornado python-unittest

我正在使用 AsyncHTTPTestCase 类为龙卷风编写单元测试用例。以前我的班级跳过了不是从测试开始的方法(在旋风中)。我实际上创建了某些方法只是为了模拟数据,它也在这些方法上运行 UT,然后以异常方式使它们失败:忽略测试方法的返回值

我的班级是:

class TestClass(AsyncHTTPTestCase):
      def setUp(self):
        super(TestClass, self).setUp()
        self.create_data = self.builddatafortestcase()

    def tearDown(self):
        settings.UT = False
        super(AsyncHTTPTestCase, self).tearDown()

    def get_app(self):
        return Application([
            ("/", Handler)
        ])
    def test_testcase1:
        -------- some test case
    
    def builddatafortestcase(self):    --- i want this to be skipped
        ------
        build some data
        return data

如何跳过此方法来运行“builddatafortestcase”??

1 个答案:

答案 0 :(得分:0)

如果 UnitTest 选择不以“test”开头的方法,您将不得不查看您是如何运行和加载测试的。通常(使用 python -m tornado.testing)它会使用 unittest.TestLoader,它有 testMethodPrefix = 'test' 所以它的 getTestCaseNames 方法应该只返回以 test 开头的方法。

您不能在函数中使用 self.skipTest(reason),因为它会跳过所有测试。

您可以在 builddatafortestcase 中设置实例变量而不是返回,如果它已经设置为 skipTest,如下所示:

class TestClass(AsyncHTTPTestCase):
    def setUp(self):
        super(TestClass, self).setUp()
        self.builddatafortestcase()

    def builddatafortestcase(self):
        if hasattr(self, "create_data"):
            self.skipTest("Not a test")
        # build some data
        self.create_data = data

但我建议用加载器解决根本问题...

相关问题