这是我的第一篇堆栈溢出帖子,我希望能给大家留下好印象
我正在用python开发一个数字猜测游戏,用unittest让我的脚湿透了,但我遇到了一个愚蠢的难题
问题是我想创建一个unittest类来测试以下内容
我的github项目链接在这里->https://github.com/robpedersendev/python-number-guessing-game
下面是我的main.py文件
import random
import sys
def guessingGame(number, guess): # Answer and guess was placed here so as to allow the test to insert
# its own values into the game, but that is not working
while true:
try:
guess = input(
f"Number guesser.\t\t\n {name} choose a number between "
f"{start} and {end}. Enter guess? : ")
guess = int(guess)
if guess < number:
print("\n\nThat number is a tad low\n\n")
elif guess > number:
print("\n\nThat number is a tad high\n\n")
else:
print("\n\nCongrats, you chose the right number!\n\n")
break
except (TypeError, ValueError):
print("Sorry, numbers only please")
guess = str(f"\'{guess}\' Which is an invalid character")
continue
except (UnboundLocalError):
print("Sorry, numbers only please")
continue
finally:
print(f"{name}, your last successful guess was {guess}")
if __name__ == "__main__":
true = True
start = int(sys.argv[1])
end = int(sys.argv[2])
number = random.randrange(start, end) # Selects the winning number
name = input("\t\t\t\t\nHello stranger, whats your name? ")
guessingGame()
我的test.py文件看起来像
import unittest
import main
class TestMain(unittest.TestCase):
def test_input(self):
true = True
number = 5
guess = 5
result = main.guessingGame(number, guess)
self.assertEqual(result)
if __name__ == "__main__":
unittest.main()
我一直在犯错误
Traceback (most recent call last):
File "c:\Users\Robert\desktop\Side Projects\Udemy\Master python zero to Mastery\projects\python-number-guessing-game\test.py", line 10, in test_input
result = main.guessingGame(number, guess)
File "c:\Users\Robert\desktop\Side Projects\Udemy\Master python zero to Mastery\projects\python-number-guessing-game\main.py", line 6, in guessingGame
while true:
NameError: name 'true' is not defined
----------------------------------------------------------------------
Ran 1 test in 0.001s
FAILED (errors=1)
[Done] exited with code=1 in 0.375 seconds
我知道我有很多事情要做,也有很多东西要学,但我希望能得到一些有益的指导
更新:
好吧,我算是解决问题了
问题在我的main.py文件中我需要这个
true = True
def guessingGame(number, guess, name='bob', start=1, end=20):
while true:
try:
# guess = input(
# f"Number guesser.\t\t\n {name} choose a number between "
# f"{start} and {end}. Enter guess? : ")
guess = int(guess)
if guess < number:
print("\n\nThat number is a tad low\n\n")
elif guess > number:
print("\n\nThat number is a tad high\n\n")
我的test.py文件
import unittest
import main
class TestMain(unittest.TestCase):
def test_input(self):
number = 5
guess = 5
start = 1
end = 20
name = "bob"
result = main.guessingGame(number, guess)
self.assertEqual(guess, number)
if __name__ == "__main__":
unittest.main()
我需要预定义值并注释掉第一小段代码。一旦我做到了,我的考试就通过了!! 有什么想法,关于如何绕过这件作品,还是我的设计很糟糕
https://book.crawfordc.com/anatomy-of-a-modern-test-file
这是我不久前写的一篇关于使用假设和pytest编写单元测试的文章。 为了测试输入字母时出现的错误,可以使用
with pytest.raises
模式。 使用假设生成随机数也会比生成随机数更好(您应该只使代码
while True:
而不是变量。但如果失败,则需要返回false。作为循环可能更好。)相关问题 更多 >
编程相关推荐