簡體   English   中英

使用 pytest_generate_tests() 時如何在 pytest.param 中設置動態標記參數

[英]How to set dynamic marks parameter in pytest.param when using pytest_generate_tests()

我有一個 pytest 設置,其中我的所有測試都通過存儲在 YAML 文件中的數據進行參數化。 該 YAML 文件中包含各種測試實例的自定義標記。 為簡單起見,我去掉了大部分代碼。 問題是下面的變量標記需要是 _pytest.mark.structures.MarkDecorator 類型

我似乎無法從字符串更改對象類型。 我在想我正在嘗試做的事情必須有一種更簡單/不同的方式,但我只是沒有看到......

def pytest_generate_tests(metafunc):

    ######################################################################
    # A bunch of code removed for simplicity but cm is defined in yaml file
    ######################################################################
    cm = "custom_marker"
    marker = f"pytest.mark.{cm}"
    final_str = pytest.param((1,2), marks=marker)

這並不能直接回答您的問題,但我編寫了一個名為parametrize_from_file的庫,用於從 YAML/TOML/JSON/NT 文件進行參數化測試(在 pytest 中)的確切目的。 它支持自定義標記,並且可能比編寫自己的參數化代碼容易得多。

根據 Kale 的回復發布答案。 謝謝羽衣甘藍我需要改變這個:

cm = "custom_marker"
    marker = f"pytest.mark.{cm}"
    final_str = pytest.param((1,2), marks=marker)

對此:

cm = "custom_marker"
    marker = getattr(pytest.mark, cm)
    final_str = pytest.param((1,2), marks=marker)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM