我有一个包含 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/