#python #unit-testing #testing
Вопрос:
У меня есть простая файловая программа (удален код из функций, так как он не имеет отношения к проблеме):
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.
Я делаю что-то не так? Можно ли в таком случае написать тест, который проверяет ТОЛЬКО одну функцию и возвращаемое ею значение?
Комментарии:
1. Если вы вставите
while True:
это вif __name__ == "__main__":
заявление, это все исправит? В противном случае, просто импортировав этот файл, вы выполните содержимое этого цикла.
Ответ №1:
Однако этот тест вместо запуска функции poziom() проходит через весь файл, также выполняя код, лежащий в основе оператора While True. Я делаю что-то не так?
Вот как import
это работает. Он выполняет код в файле, который вы импортируете. Чтобы решить проблему, поместите цикл while в if __name__ == '__main__':
так же, как вы это делаете в своем тестовом файле.
Комментарии:
1. Не работает, к сожалению. Я сделал, как вы сказали: if name == ‘ main ‘: while True: unittest.main (), но выполнение тестов все равно приводит меня к циклу while true внутри основного файла.
2. @MikaelDiak Какой файл вы отредактировали?
unittest.main()
находится в файле теста, ноwhile True
находится в файле с функциями.