为什么setUpClass(cls):多次执行?

时间:2016-06-15 10:55:28

标签: python unit-testing python-3.x visual-studio-2013

我正在为Web服务实现组件测试。我想使用类方法setUpClass(cls):在开始时只启动我的Web服务一次,但是在我的每个测试用例之前执行setUpClass(cls):。为什么?文档说它在执行测试用例之前只执行一次。有任何想法吗? 我正在使用Python 3.5。

class SomeTest(unittest.TestCase):

    @classmethod
    def setUpClass(cls):
        cls.MyService = ComponentManager.GetMyService()
        cls.MyService.Start()
        return super(SomeTest, cls).setUpClass()

    @classmethod
    def tearDownClass(cls):
        return super(SomeTest, cls).tearDownClass()

    def test_invalid_request(self):
        response = self.client.SendJSONRequest(Constants.METHOD_POST, '/tile/invalid/', '{}')
        ...

1 个答案:

答案 0 :(得分:2)

查看Python tools for Visual Studio source code,VS测试运行器完全独立地运行每个测试用例

每个测试用例作为Python解释器的单独命令行调用运行(使用custom test launcher,传入模块和每个测试名称),这就是调用类设置和拆除的原因每次测试。 Python永远不会有机会一起运行这些测试。

如果这对你很重要,你必须file a ticket with the Python Tools project;我此时看不到relevant open ticket for the test adapter

或者,使用不同的测试运行器运行测试。您可以使用built-in unittest command line,例如:

python3 -m unittest your_package

或选择任何popular tools available