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/

相关文章:

sql-server - 如何强制死锁来测试存储过程的try/catch?

android - Robotium:验证 Activity 是否完成,并且在单击 "home"按钮时底层的 Activity 已恢复

django - 在 Django URL 模板标签内使用语义 UI 的查询结果

python - 如何拥有不带破折号的 models.UUIDField 字段

testing - 如何为 Android Studio 创建小米模拟器?或任何其他方式来测试小米模拟器上的应用程序?

unit-testing - 在 Kotlin 中测试预期的异常

unit-testing - 桌面应用程序和 Web 应用程序之间的区别

python - Django:根据条件对外键进行分组和排序

django - 为什么 Elasticsearch 在 docker 中索引少量数据时性能很差?

django - 使用 Django 和 Tastypie 返回随机项目