我们正在使用黑盒(功能集成)测试方法测试 Django 应用程序,其中客户端通过对 Django 应用程序的 REST API 调用执行测试。客户端在不同的 VM 上运行,因此我们不能使用典型的 coverage.py(我认为)。
有没有办法计算这些黑盒测试的覆盖率?我可以以某种方式指示 Django 在测试覆盖率模式下启动和停止,然后报告测试覆盖率吗?
最佳答案
功能集成测试的覆盖率实际上是一个不同于单元测试覆盖率的抽象层,单元测试覆盖率覆盖了执行的代码行。您可能更关心真正的黑盒测试中用例的覆盖率。
但是,如果您无论如何都在寻找代码覆盖率(并且肯定有您可能想要这样做的原因),那么如果您有权访问服务器来设置测试场景,那么看起来您应该能够使用 coverage.py。您将需要实现一种方法来结束 django 进程,以允许 coverage.py 编写覆盖率报告。
From: https://coverage.readthedocs.io/en/coverage-4.3.4/howitworks.html#execution
"At the end of execution, coverage.py writes the data it collected to a data file"
这表明 python 进程必须自然完成。手动终止进程也会移除阻止写入的 coverage.py 包装器。
结束django的一些想法:stop django command using sys.exit()
参见: https://docs.djangoproject.com/en/1.10/topics/testing/advanced/#integration-with-coverage-py
关于python - django 测试覆盖率与黑盒测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21522103/