django - Django 测试的 HTML 报告

标签 django testing

我有一个包含 API 的 Django 项目(如果需要的话,使用 rest 框架创建)。我已经为 API 添加了一些测试,但为了全面了解测试,无论是通过、失败还是缺失,我都需要创建一个 HTML 报告。 测试完成后,应生成一个 HTML 表格报告,其中显示测试期间涵盖的端点和 HTTP 响应、测试结果以及缺少测试的组合。

不幸的是,我不明白我应该怎么做。我知道 coverage 可以给我一个详细的 html 报告,但这不是我需要的,我需要这样的东西:

|端点描述 | 200 | 400 | 403 | 404 |
|获取/端点1 |通过 |通过 |通过 |不适用 |
| POST/端点1 |通过 |失败 |丢失|不适用 |

有人知道吗?也许一些库可以帮助解决这个问题,或者我应该使用什么策略?

提前致谢

最佳答案

派对迟到了,但这是我为 Django 测试输出 HTML 测试报告的解决方案。 (基于 HtmlTestRunner cannot be directly used with Django DiscoverRunner )

如果放在 tests/html_test_reporter.py 中,以下类可以用作 DiscoverRunner,它被修补以使用 HTMLTestRunner。

from django.test.runner import DiscoverRunner
from HtmlTestRunner import HTMLTestRunner

class MyHTMLTestRunner(HTMLTestRunner):
    def __init__(self, **kwargs):
        # Pass any required options to HTMLTestRunner 
        super().__init__(combine_reports=True, report_name='all_tests', add_timestamp=False, **kwargs)

class HtmlTestReporter(DiscoverRunner):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        # Patch over the test_runner in the super class.
        html_test_runner = MyHTMLTestRunner
        self.test_runner=html_test_runner

然后运行:

python manage.py test -v 2 --testrunner tests.html_test_reporter.HtmlTestReporter

默认情况下,Django 项目使用 django.test.runner.DiscoverRunner 搜索测试,然后使用 PyTest 运行它们。 HTMLTestRunner 可以与 PyTest 一起使用以输出 HTML 测试报告,但似乎可以通过 DiscoverRunner 配置 PyTest 以使用 HTMLRunner。

希望这对您有所帮助。

关于django - Django 测试的 HTML 报告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34638520/

相关文章:

python - 如何使 Django 的 DateTimeField 可选?

django - 提高形式。ValidationError 不工作

python - test_urls.py 和 test_views.py 的区别

ruby-on-rails - 带有密码列的 Ruby 固定装置错误

android - 为 gradle 生成的 AndroidManifest 指定额外的 XML

unit-testing - 编写更好的单元测试的技巧

python - Graphql Django 获取嵌套对象属性的最佳方法

python - Django 静态文件未在 Azure 上提供

django - 在 Django 中扩展/修改外部应用程序 View 的正确方法是什么?

java - 比较排行榜表上前几行的值,简单查询