Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有条件地继续Python单元测试_Python_Unit Testing - Fatal编程技术网

有条件地继续Python单元测试

有条件地继续Python单元测试,python,unit-testing,Python,Unit Testing,我有一个测试平台,其中有三套数独解算器测试: 单独测试大多数功能 测试最后几个函数,它们使用步骤1中的函数 用95个较难的谜题测试最后几个函数 由于第3步需要一段时间,我正在寻找一种方法,如果前面的所有步骤都通过了,就只能进入下一步。使用单元测试框架可以做到这一点吗,或者编写自己的控制结构更容易吗?使用doctest 如果希望使用doctest,则将其视为Python空闲(有关如何准备测试的提示,请参阅),将以前测试的结果分配给某些变量,然后使用条件检查来确定是否希望执行其他测试。就这样 不幸的

我有一个测试平台,其中有三套数独解算器测试:

  • 单独测试大多数功能
  • 测试最后几个函数,它们使用步骤1中的函数
  • 用95个较难的谜题测试最后几个函数
  • 由于第3步需要一段时间,我正在寻找一种方法,如果前面的所有步骤都通过了,就只能进入下一步。使用单元测试框架可以做到这一点吗,或者编写自己的控制结构更容易吗?

    使用
    doctest
    如果希望使用
    doctest
    ,则将其视为Python空闲(有关如何准备测试的提示,请参阅),将以前测试的结果分配给某些变量,然后使用条件检查来确定是否希望执行其他测试。就这样

    不幸的是,这与我们无关

    使用
    unittest
    unittest的命令行选项
    对于
    unittest
    ,您仍然可以使用从命令行调用它,因此它在出现第一个错误或失败时停止测试运行

    跳过测试
    unittest
    支持基于某些条件()跳过测试,或者当您知道测试已中断且不希望将其视为失败时跳过测试。请参见基本跳过示例:

    class MyTestCase(unittest.TestCase):
    
        @unittest.skip("demonstrating skipping")
        def test_nothing(self):
            self.fail("shouldn't happen")
    
        @unittest.skipIf(mylib.__version__ < (1, 3),
                         "not supported in this library version")
        def test_format(self):
            # Tests that work for only a certain version of the library.
            pass
    
        @unittest.skipUnless(sys.platform.startswith("win"), "requires Windows")
        def test_windows_support(self):
            # windows specific testing code
            pass
    
    类MyTestCase(unittest.TestCase):
    @unittest.skip(“演示跳过”)
    def测试无任何内容(自身):
    自我失败(“不应该发生”)
    @单元测试.skipIf(mylib.版本<(1,3),
    “此库版本不支持”)
    def测试_格式(自):
    #仅适用于库的特定版本的测试。
    通过
    @unittest.skipUnless(sys.platform.startswith(“win”),“需要Windows”)
    def测试windows支持(自我):
    #特定于windows的测试代码
    通过
    

    它有用吗?

    如果您的测试是在
    unittest
    测试套件中结构化的,那么只有在第一个测试套件使用以下代码顺利通过时,您才能执行长时间运行的测试套件:

    suite1 = unittest.TestSuite()
    suite2 = unittest.TestSuite()
    # fill suites with test cases ...
    result1 = unittest.TextTestRunner().run(suite1)
    if result1.wasSuccessful():
        unittest.TextTestRunner().run(suite2)
    

    我可以肯定地告诉你,如果你想知道的话,这在
    doctest
    测试中是可能的。一些研究揭示了您可能正在寻找的
    unittest
    的一些有用特性。您没有提到用于单元测试的模块,因此我假设
    unittest