【问题标题】:Running a test on Python script - what am I doing wrong?在 Python 脚本上运行测试 - 我做错了什么?
【发布时间】:2021-06-24 16:39:08
【问题描述】:

我有一个简单的文件程序(从函数中删除代码,因为它与问题无关):

import random
import sys


def poziom(level):
    *does something and returns something*

def gra(chance):
    *does something and returns something*


def save(name):
    *does something and returns something*


while True:
    *does something in loop, executing other functions above*

我正在尝试针对其功能之一运行一个简单的单元测试:

import unittest

from my_game import save
from my_game import gra
from my_game import poziom




class TestSum(unittest.TestCase):
    def test_list_int(self):
        """
        Test that it can sum a list of integers
        """
        check = "Test string"
        result = poziom(check)
        self.assertEqual(result, 0)

if __name__ == '__main__':
    unittest.main()

但是,此测试不是运行 poziom() 函数,而是运行整个文件,还执行 While True 语句后面的代码。 我做错了吗?在这种情况下是否可以编写一个只检查一个函数和它返回的值的测试?

【问题讨论】:

  • 如果您将while True: 放在if __name__ == "__main__": 语句中,可以解决问题吗?否则,仅导入该文件将执行该循环的内容。

标签: python unit-testing testing


【解决方案1】:

但是,此测试不是运行 poziom() 函数,而是运行整个文件,还执行 While True 语句后面的代码。我做错了什么吗?

这就是import 的工作原理。它执行您导入的文件中的代码。要解决此问题,请将 while 循环放入 if __name__ == '__main__': 中,就像您在测试文件中所做的那样。

【讨论】:

  • 不工作,很遗憾。我确实像你说的那样: if name == 'main': while True: unittest.main() 但是执行测试仍然会让我进入 main 内的 while true 循环文件。
  • @MikaelDiak 您编辑了哪个文件? unittest.main() 在测试文件中,但while True 在带有函数的文件中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-01-14
  • 1970-01-01
  • 2020-02-04
  • 2011-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多