このエントリでは、
Allure Behaveで検査結果にMarkdown文書を添付する方法を記載します。

Allureのレポートには、次のページで示されているように、
Screenshots, Videos, Text(html/plain), Tables, URI lists, Documents(xml/json/yaml)
などの形式のデータを添付できます。

Attachments | Allure Report
https://allurereport.org/docs/attachments/

Markdown形式の文書をそのまま添付できないので、
このエントリでは、HTMLに変換して添付することを考えます。

ライブラリのインストール

まずは、必要なライブラリをインストールします。

$ pip install behave
$ pip install allure-behave
$ pip install markdown
$ pip install requests

MarkdownをHTMLに変換するために、Python-Markdownを使用します。

Python-Markdown
https://python-markdown.github.io/

また、スタイルを適用するCSSを取得するために、requestsも入れておきます。

実装コード

以下のコードが、Markdown添付を実装したものです。

sample.feature

Feature: sample feature

  Scenario: senario1
    When Markdown文書を添付

sample.py

import markdown
import requests
import allure
from behave import *

md_css_body = None
md = markdown.Markdown(extensions=['tables', 'fenced_code', 'codehilite'])

def allure_attach_markdown(name, md_body):
  global md_css_body
  if md_css_body is None:
    resp = requests.get("https://raw.githubusercontent.com/sindresorhus/github-markdown-css/main/github-markdown.css")
    md_css_body = resp.text
  allure.attach(
    '<style>' + md_css_body + '</style><div class=markdown-body>' + md.convert(md_body) + '</div>',
    name=name, attachment_type=allure.attachment_type.HTML)

@when("Markdown文書を添付")
def step_impl(context):
  allure_attach_markdown(
    name="Markdown文書",
    md_body="""
# ヘッダ

文章

- リスト1
- リスト2
- リスト3

| 表ヘッダ1 | 表ヘッダ2 |
| -- | -- |
| 表データ1 | 表データ2 |

    """
  )

Python-Markdownの初期化時に与えているExtensionについては、次を参照してください。

Extensions | Python-Markdown documentation
https://python-markdown.github.io/extensions/

以上。