【发布时间】:2023-02-21 00:32:30
【问题描述】:
我有以下 pytest 函数,其中 GAMES_AVAILABLE 是我希望我的代码测试的不同游戏的动态列表。
@pytest.mark.parametrize("game_ref", GAMES_AVAILABLE)
def test_all_games(game_ref):
game_components = build_game_components(game_ref)
available_players = determine_available_players(game_components)
teams = create_player_teams(game_components['game'].number_of_players,available_players)
for players in teams:
if 'viz' in game_components:
arena = Arena(players, game_components['game'], game_components['viz'])
else:
arena = Arena(players, game_components['game'])
arena.playGames(2)
return teams
输出如下
Testing started at 4:20 p.m. ...
Connected to pydev debugger (build 223.8617.48)
Launching pytest with arguments /home/tue/PycharmProjects/Hive_nn/tests/test_all_games.py --no-header --no-summary -q in /home/tue/PycharmProjects/Hive_nn/tests
============================= test session starts ==============================
collecting ... collected 3 items
test_all_games.py::test_all_games[game_ref0]
test_all_games.py::test_all_games[game_ref1]
test_all_games.py::test_all_games[game_ref2]
======================== 3 passed, 3 warnings in 7.56s =========================
Process finished with exit code 0
就目前而言,我的代码以游戏可以玩的所有可能配置来玩每个游戏,这是动态完成的,具体取决于为特定游戏实现的功能。
现在我的代码为每场比赛生成一个测试,但是我希望它在每场比赛中为每个团队生成一个测试然后运行:
if 'viz' in game_components:
arena = Arena(players, game_components['game'], game_components['viz'])
else:
arena = Arena(players, game_components['game'])
arena.playGames(2)
在这些新的子测试中。
但我不确定该怎么做?
此外,我对单元测试还很陌生,所以如果我的代码中有些东西看起来很奇怪或愚蠢,那可能是这样,我将不胜感激任何关于改进之处的反馈:)
【问题讨论】:
标签: python unit-testing pytest