Python unittest,只运行失败的测试

时间:2017-05-12 17:01:52

标签: python unit-testing tdd

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

  1. 添加测试。
  2. 运行测试(一个失败,因为我还没有编写代码使其通过)
  3. 实施行为
  4. 仅运行上次失败的测试
  5. 修复了我在实现代码时犯下的愚蠢错误
  6. 只运行失败的测试,这次通过
  7. 运行所有测试以找出我破坏的内容。
  8. 是否可以从命令行执行此操作?

3 个答案:

答案 0 :(得分:1)

每个测试函数都声明为:

    def test_something_something(self):

如果您在前面添加下划线,例如:

    def _test_something_something(self):

该测试将被忽略。你可以做的一件事是快速find and replace in vim。找到所有“test_”并用“_test_”替换它们,然后找到一个失败的测试并删除下划线。

答案 1 :(得分:1)

(不是完全自动化的解决方案,但优于现有解决方案)

如果将测试类的名称作为参数传递给测试脚本,则只会运行该测试。例如,如果您只想在脚本 time |speed |wheels 1:00 |30 |no_data 2:00 |no_data|18 no_data|no_data|no_data 3:00 |50 |18 中的MyTest类中运行测试:

test_whatever.py

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

MyTest

答案 2 :(得分:0)

只需使用-最后失败选项

运行测试