通过命令行从 unittest.TestCase 运行单个测试

新手上路,请多包涵

在我们的团队中,我们定义大多数测试用例是这样的:

一个“框架”类 ourtcfw.py

 import unittest

class OurTcFw(unittest.TestCase):
    def setUp:
        # Something

    # Other stuff that we want to use everywhere

还有很多测试用例,比如 testMyCase.py:

 import localweather

class MyCase(OurTcFw):

    def testItIsSunny(self):
        self.assertTrue(localweather.sunny)

    def testItIsHot(self):
        self.assertTrue(localweather.temperature > 20)

if __name__ == "__main__":
    unittest.main()

当我编写新的测试代码并希望经常运行它并节省时间时,我会在所有其他测试的前面加上“__”。但这很麻烦,分散了我正在编写的代码的注意力,而且由此产生的提交噪音也很烦人。

因此,例如,在更改 testItIsHot() 时,我希望能够做到这一点:

 $ python testMyCase.py testItIsHot

并有 unittest 运行 testItIsHot()

我怎样才能做到这一点?

我试图重写 if __name__ == "__main__": 部分,但由于我是 Python 的新手,我感到迷茫并继续抨击除方法之外的所有内容。

原文由 Alois Mahdal 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 433
2 个回答

这按照你的建议工作——你只需要指定类名:

 python testMyCase.py MyCase.testItIsHot

原文由 phihag 发布,翻译遵循 CC BY-SA 3.0 许可协议

如果你组织你的测试用例,即遵循与实际代码相同的组织,并且对同一包中的模块也使用相对导入,你还可以使用以下命令格式:

 python -m unittest mypkg.tests.test_module.TestClass.test_method

# In your case, this would be:
python -m unittest testMyCase.MyCase.testItIsHot

Python 3 文档: 命令行界面

原文由 Ajay M 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题