我使用Python 3.6 + Pygame创建了一个游戏,但我所做的任何测试都不会显示。我想知道如何在运行或将测试输出到文件时显示测试。这是我目前的代码(我的游戏名为CatchTheFruit.py):
import CatchTheFruit
import unittest
class IntegerArithmentic(unittest.TestCase):
def test_checkWorks(self):
self.assertEqual((1 + 2), 3)
if __name__ == '__main__':
unittest.main()
这不是我将使用的测试之一,尽管它仍然应该显示。当它运行时,它将启动我的游戏,但没有显示测试?那我怎么做才能看到测试呢?这是因为我的游戏代码中存在问题还是需要修改测试?
答案 0 :(得分:3)
默认情况下,unittest显示在shell /控制台中,测试运行正常:
.
----------------------------------------------------------------------
Ran 1 test in 0.000s
OK
单元测试的目的不是向播放器显示,因此更好的解决方案是将结果记录到文件中。
unittest.main()
接受一个参数作为流(称为testRunner
),您可以使用它来生成同一文件夹中的文件:
if __name__ == '__main__':
with open('test.log', 'w') as f:
trunner = unittest.TextTestRunner(f)
unittest.main(testRunner=trunner)
(然后你仍然可以使用这个文件作为源来在pygame屏幕上显示结果)
编辑:
要回答导入游戏模块时发生的问题:
导入模块时会对其进行读取和评估,因此如果您声明一个启动游戏的变量,例如game = launch_game()
,则会调用该函数。
简易测试:创建第一个文件:
#mygame.py
def main():
print('this is printed when module is imported')
game = main()
然后在另一个中,执行导入:
# test.py
import mygame
print('This one goes next')
执行test.py时,它将显示两个打印语句。
因此,您需要将变量游戏封装在如下结构中:
def main():
print('this one is not printed')
if __name__ == '__main__':
game = main()