我们正在使用黑盒(功能集成)测试方法测试Django应用程序,其中客户端使用对Django应用程序的REST API调用来执行测试。客户端在不同的VM上运行,因此我们无法使用典型的coverage.py(我认为)。
有没有办法计算这些黑盒测试的覆盖范围?我可以以某种方式指示Django在测试覆盖模式下启动和停止,然后报告测试覆盖率吗?
答案 0 :(得分:0)
功能集成测试的覆盖范围实际上是一个不同的抽象层,而不是单元测试覆盖率,它涵盖了执行的代码行。在真正的黑盒测试中,您可能更关心用例的覆盖范围。
但是如果你正在寻找代码覆盖率(并且肯定有你可能想要的原因),看起来如果你有权访问服务器来设置测试场景,你应该能够使用coverage.py。您需要实现一种结束django进程的方法,以允许coverage.py编写覆盖率报告。
自: https://coverage.readthedocs.io/en/coverage-4.3.4/howitworks.html#execution
“执行结束时,coverage.py将收集的数据写入 数据文件“
这表明python进程必须自然完成。手动杀死进程也会取出coverage.py包装器,阻止写入。
结束django的一些想法:stop django command using sys.exit()
请参阅: https://docs.djangoproject.com/en/1.10/topics/testing/advanced/#integration-with-coverage-py