如何将一个字符串拆分成多行,其中字符串完全相同

问题描述 投票:0回答:1

这是一个简单的单元测试:

@pytest.mark.parametrize(
    "card, expected",
    [
        (
            Sneeze(),
            "+---------------------+   \n|        Sneeze       |   \n|---------------------|   \n| Suit:      Accident |   \n| Rank:          Jack |   \n| Energy_cost:      1 |   \n| Damage:           1 |   \n|                     |   \n|---------------------|   \n|        Achoo!       |   \n+---------------------+   \n",
        ),
        (
            ThrowCard(),
            "+---------------------+   \n|      Card Throw     |   \n|---------------------|   \n| Suit:        Attack |   \n| Rank:          Jack |   \n| Energy_cost:      2 |   \n| Damage:           2 |   \n|                     |   \n|---------------------|   \n|      Ricky Jay?     |   \n+---------------------+   \n",
        ),
    ],
)
def test_display_cards(capsys, card, expected):
    testdeck = [card]
    display_cards(testdeck)
    captured = capsys.readouterr()
    assert captured.out == expected

300 个字符串有点笨重,flake8 也同意。但是,如果我使用通常的方法将其拆分:

@pytest.mark.parametrize(
    "card, expected",
    [
        (
            Sneeze(),
            '''
            +---------------------+
            |        Sneeze       |
            |---------------------|
            | Suit:      Accident |
            | Rank:          Jack |
            | Energy_cost:      1 |
            | Damage:           1 |
            |                     |
            |---------------------|
            |        Achoo!       |
            +---------------------+''',

@pytest.mark.parametrize(
    "card, expected",
    [
        (
            Sneeze(),
            "+---------------------+   \n|        \
                Sneeze       |   \n|---------------------|  \
                      \n| Suit:      Accident |   \n| Rank:  \
                                      Jack |   \n| Energy_cost:      1 |   \n| Damage:       \
                                                1 |   \n|                     |   \n|---------------------|   \n|  \
                                                                Achoo!       |   \n+---------------------+   \n",
        ),

这两个在技术上都不属于“完全相同”的相同字符串,并且测试失败。我该怎么办? 这个方法也行不通

如何将长字符串的定义拆分为多行?

@pytest.mark.parametrize( "card, expected", [ ( Sneeze(), ("+---------------------+ " "| Sneeze | " "|---------------------| " "| Suit: Accident | " "| Rank: Jack | " "| Energy_cost: 1 | " "| Damage: 1 | " "| | " "|---------------------| " "| Achoo! | " "+---------------------+ \n"), ),


python pytest flake8
1个回答
0
投票

最终代码:

@pytest.mark.parametrize( "card, expected", [ ( Sneeze(), ("+---------------------+ \n" "| Sneeze | \n" "|---------------------| \n" "| Suit: Accident | \n" "| Rank: Jack | \n" "| Energy_cost: 1 | \n" "| Damage: 1 | \n" "| | \n" "|---------------------| \n" "| Achoo! | \n" "+---------------------+ \n"), ),

测试通过

© www.soinside.com 2019 - 2024. All rights reserved.