【问题标题】:Why is using the verbose flag necessary to run a specific unittest?为什么要使用详细标志来运行特定的单元测试?
【发布时间】:2020-03-11 22:14:37
【问题描述】:

根据running a single test via command line when tests are located within a sibling folder 的问题,answer 建议在模块名称和测试名称旁边使用-v 选项来运行特定测试。

为什么-v 选项可以实现这一点?指定模块名称和测试名称是有意义的,因为它对应于unittest documnetation,显然您需要指定要运行的测试。但是,据我所知,-v 选项对应于详细输出,不应更改 unittest 模块运行的测试。

如果我在这里遗漏了一些明显的东西,请提前道歉。

【问题讨论】:

  • 你试过没有-v吗?
  • 是的,我有。如果没有-v 选项,它将运行tests 目录中的所有测试,而不是指定的测试。
  • 你能告诉我们两个完整的命令行(有和没有-v)吗?这听起来很奇怪……
  • 感谢有关检查命令行的评论。请参阅我的回答,了解我做测试时出了什么问题。

标签: python python-3.x python-unittest


【解决方案1】:

所以这不起作用的原因是我的一个非常明显但愚蠢的错误?。

tldr;使用完整的命令行运行测试(例如python3 -m unittest tests.module_name.TestClass.test_func),或者如果您使用的是 bash 函数,请确保该函数接受其他参数。


我设置了一个名为 run_tests 的 bash 函数来运行 unittests,并且在调用该方法后我试图指定模块名称和测试名称。 IE。我在 .bash_profile 中有以下内容:

run_tests ()
{
    python3 -m unittest
}

在终端上,我做到了:

run_tests tests.module_name.TestClass.test_func

由于 bash 函数没有设置为接受参数,我想要运行的特定测试实际上并没有作为参数传递给 unittest。

显然,如果您使用 run_tests 函数尝试运行特定测试,则使用 -v 没有区别。

当我使用-v 选项进行测试时,我使用了完整的命令python3 -m unittest -v tests.module_name.TestClass.test_func,这就是为什么我认为-v 选项可以让它工作。为了测试-v 选项是否真的有效,我很懒惰,再次运行run_tests tests.module_name.TestClass.test_func,因为它在我的shell 历史记录中,而不是输入完整的命令,这就是造成这种混乱的原因。

【讨论】:

    猜你喜欢
    • 2018-10-30
    • 2022-09-28
    • 1970-01-01
    • 2023-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-07
    • 1970-01-01
    相关资源
    最近更新 更多