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