我有一个python应用程序,我是单元测试。一半的应用程序正在运行,我的测试精度非常高。
该应用程序需要一次性用户输入以进行安装。
这意味着,如果您运行代码,则必须与用户进行交互。
Coverage是一个用于报道报告的Python插件。我在这个命令中使用coverage:
coverage run application.py
Coverage运行我的应用程序,完成我的测试,并提供覆盖率报告。
问题是运行这些测试的命令,执行我的应用程序,我必须提供输入。这不是什么大不了的事,但我不能在使用Jenkins的CI服务器上做到这一点(或者我可以吗?)。
我想在没有用户输入的情况下运行覆盖工具。在我的测试中,input
函数被模拟了。在没有覆盖的情况下运行我的所有测如何防止覆盖要求用户输入?
答案 0 :(得分:1)
您应该有2个不同的代码路径,一个用于运行测试,另一个用于运行应用程序:
coverage run tests.py
使用tests.py
导入application.py
,根据需要模拟方法,然后运行实际的应用程序。
或者您可以通过命令行参数允许用户输入:
coverage run application.py --user=input --other="etc."
最后,如果你的应用程序的某些部分确实无法进行测试或合理模拟(它会发生,请说你正在调用你无法在测试中加载的第三方异常跟踪库/服务),您可以通过在指令末尾添加coverage
来指示# pragma: no cover
忽略这些行,以便计算覆盖率:
my = "code"
goes = "here"
if debug: # pragma: no cover
call_untestable(code=True)
this_portion(ignored_for_coverage=True)
covered_code = "yes, again!"
在此处查看更多信息:
http://coverage.readthedocs.io/en/coverage-4.2/excluding.html