You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Django的manage.py test生成Allure测试报告?

使用Django的manage.py test生成Allure报告

我完全懂你的困扰——Allure的文档几乎全是围绕pytest的,但你就习惯用Django原生的manage.py test跑测试,不想切换到pytest生态。其实咱们可以通过自定义测试运行器结合Allure的Python核心库来实现,不用动现有测试代码,下面是一步步的实操方案:

1. 安装必要依赖

除了你已经装的allure-pytest,咱们还需要Allure的Python核心库(不依赖pytest):

pip install allure-python-commons

2. 编写自定义测试运行器

在你的Django项目根目录下新建一个test_runner.py文件,用来继承Django默认的测试运行器,注入Allure的报告逻辑:

from django.test.runner import DiscoverRunner
from allure_commons.types import AttachmentType
import allure_commons
import allure

class AllureTestRunner(DiscoverRunner):
    def run_suite(self, suite, **kwargs):
        # 初始化Allure上下文
        allure_commons.plugin_manager.register(allure_commons.plugin.Plugin())
        # 执行测试套件
        test_result = super().run_suite(suite, **kwargs)
        # 生成Allure结果文件和HTML报告
        allure.generate_report(source="allure-results", target="allure-report", clean=True)
        # 清理Allure插件
        allure_commons.plugin_manager.unregister(allure_commons.plugin.Plugin())
        return test_result

    def run_test(self, test, **kwargs):
        try:
            # 给测试用例自动添加Allure标题和描述
            allure.dynamic.title(test._testMethodName)
            test_doc = test._testMethodDoc or "No description provided"
            allure.dynamic.description(test_doc)
            # 执行单个测试用例
            result = super().run_test(test, **kwargs)
            # 捕获失败/错误信息,添加为Allure附件
            for failure in result.failures + result.errors:
                error_msg = str(failure[1])
                allure.attach(error_msg, name="Error Details", attachment_type=AttachmentType.TEXT)
            return result
        except Exception as e:
            allure.attach(str(e), name="Unexpected Exception", attachment_type=AttachmentType.TEXT)
            raise

3. 配置Django使用自定义运行器

打开项目的settings.py,找到TEST_RUNNER配置项,替换成咱们刚才写的运行器:

# 替换成你的项目名称,比如myproject.test_runner.AllureTestRunner
TEST_RUNNER = 'your_project_name.test_runner.AllureTestRunner'

4. 运行测试并查看报告

现在直接执行你熟悉的命令:

python manage.py test

测试完成后,项目根目录会生成两个文件夹:

  • allure-results:存储Allure的原始测试结果数据
  • allure-report:生成好的静态HTML报告

如果要在浏览器里查看报告,确保你已经安装了Allure命令行工具,然后执行:

allure serve allure-results

这会启动一个本地临时服务器,自动打开浏览器展示美观的Allure报告。

额外注意事项

  • Allure命令行工具:如果还没装,需要从Allure官方下载对应系统的版本,添加到系统环境变量PATH中,这样才能用allure serve或allure generate命令。
  • 自定义扩展:你可以在测试用例里直接使用Allure的装饰器(比如@allure.severity(allure.severity_level.CRITICAL)),自定义测试运行器会自动识别这些标记。
  • 兼容性:这个方案完全兼容Django原生的TestCase和SimpleTestCase,不需要修改你已有的测试代码。

内容的提问来源于stack exchange,提问作者p.matsinopoulos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 09:15:42