gpt4 book ai didi

python - 如何为带有输入的代码编写单元测试 (Python)

转载 作者:行者123 更新时间:2023-12-05 06:58:59 25 4
gpt4 key购买 nike

我是单元测试的新手,我必须将单元测试类添加到问题的解决方案中。问题是在这里找到的 https://practice.geeksforgeeks.org/problems/penalty-shooters/0#我的代码如下。我无法弄清楚如何使用用户输入进行单元测试。

T = int(input())

for x in range(T):
# Allows us to input and apply method to all iterables in a | no. of tests \n x_energy y_energy z_energy | format. T = number of tests, x is Lohia energy, y is Gosu energy and z is Goalkeeper energy
x, y, z = list(map(int, input().split(" ")))
Goal_Lohia, Goal_Gosu = 0, 0

# Session ends when goalkeepers energy decrements to 1
while z > 1:
# Goalkeepers energy in this case is a factor of both strikers' energy, so both score.
if x % z == 0 and y%z == 0:
x = x - 1
Goal_Lohia = Goal_Lohia + 1
y = y - 1
Goal_Gosu = Goal_Gosu + 1
# In this case, the goalkeepers energy is only a factor of Lohia's. Note Lohia goes first as the problem states.
elif x % z == 0:
x = x - 1
Goal_Lohia = Goal_Lohia + 1
# And in this case, it is only a factor of Gosu's
elif y % z == 0:
y = y - 1
Goal_Gosu = Goal_Gosu + 1
# If goalkeepers energy is a factor of neither Gosu nor Lohia, the goalkeeper will save (no goal scored) and will lose energy.
else:
z = z - 1
print(Goal_Lohia, Goal_Gosu)

非常感谢!

最佳答案

最好的方法是将此逻辑提取为纯函数并将解析后的数据传递给它:

def logic(records):
for x, y, z in records:
...

return goal_lohia, goal_gosu


def main():
t = int(input())
records = []
for _ in range(t):
records.append(list(int(c) for c in input().split()))

print(logic(records))

现在您可以在与输入/输出问题隔离的情况下测试 logic()

关于python - 如何为带有输入的代码编写单元测试 (Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64487301/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com