Python unittest,仅运行失败的测试

Python unittest,仅运行失败的测试,python,unit-testing,tdd,Python,Unit Testing,Tdd,我有一个使用unittest的大型python测试文件,它是从命令行运行的。有些测试需要一段时间才能运行。这是一个轻微的痛点,因为我通常只关心我添加的最后一个测试。我想要的是: 添加测试 运行测试(一个测试失败,因为我没有编写代码使其通过) 实施行为 只运行上次失败的测试 修复我在实现代码时犯的愚蠢错误 只运行失败的测试,这次通过 运行所有的测试,找出我打破了什么 可以从命令行执行此操作吗 每个测试函数的声明如下: def test_something_something(self):

我有一个使用unittest的大型python测试文件,它是从命令行运行的。有些测试需要一段时间才能运行。这是一个轻微的痛点,因为我通常只关心我添加的最后一个测试。我想要的是:

  • 添加测试
  • 运行测试(一个测试失败,因为我没有编写代码使其通过)
  • 实施行为
  • 只运行上次失败的测试
  • 修复我在实现代码时犯的愚蠢错误
  • 只运行失败的测试,这次通过
  • 运行所有的测试,找出我打破了什么
    可以从命令行执行此操作吗

    每个测试函数的声明如下:

        def test_something_something(self):
    
    如果在前面添加下划线,如:

        def _test_something_something(self):
    
    该测试将被忽略。你能做的一件事就是做一个快速的测试。找到所有“测试”并将其替换为“\u测试”,然后找到一个失败的测试并删除下划线。

    (不是完全自动化的解决方案,但比现有解决方案更好)

    如果将测试类的名称作为参数传递给测试脚本,则只运行该测试。例如,如果您只想在脚本
    test\u whatever.py
    中的
    MyTest
    类中运行测试:

    python3 test_whatever.py MyTest
    
    还可以将单个测试指定为该类的成员。例如,假设您希望在类
    MyTest
    中运行测试
    test\u something

    python3 test_whatever.py MyTest.test_something
    

    只需使用--last failed选项运行测试(您可能需要pytest)

    将单元测试拆分为单独的文件将很可能解决您的问题。这是如何工作的?我仍然需要python知道哪些文件有效,哪些文件无效……是的,但您需要自己创建它。您可以导入
    unittest
    ,运行发现,收集失败的测试,然后仅执行这些测试。但是,您必须创建自己的CLI.Upvoted,因为这可以让我大部分时间都在那里-将暂时打开,以防有人有一个非常方便的东西,我们还没有看到:)这不是一个选项@chiktin根据文档,插件提供了两个命令行选项来重新运行上次pytest调用中的失败:--lf,--last failed-仅重新运行失败--ff,--首先失败-首先运行失败,然后运行其余测试。