Как решить проблему с импортом и перезагрузкой - PullRequest
0 голосов
/ 09 июля 2019

У меня есть базовый инструмент с графическим интерфейсом Tkinter, который проходит через линейный тест, а затем позволяет выполнить тест нового сервиса через отдельный модуль тестирования. У меня была проблема с повторным тестированием, когда я просто предоставлял те же данные, что и предыдущий, поэтому добавил importlib.reload (test), который решил эту проблему, но теперь код выполняется дважды.

Я попытался добавить счетчик, подобный этому

if n = 0:
   import(test)
   n=n+1
else: 
    reload(test)

но во втором цикле я получаю ошибку

UnboundLocalError: локальная переменная 'test', указанная перед присваиванием

и

n = 1
import test as n
n=n+1

но тогда n больше не является переменной.

Мне нужно пройти тест один раз, а затем перезагрузить второй тест с новыми данными

1 Ответ

0 голосов
/ 09 июля 2019

Первый файл - mytestmain.py .Он вызывает функцию test внутри отдельного модуля mytest.py .

# Load file mytest.py from the working directory.
# The calling file is "mytestmain.py", also in the working directory.

import mytest
print(mytest)
# output example: <module 'mytest' from 'c:\\python\\so\\mytest.py'>

data1 = 2
answer1 = 4 

data2 = 3
answer2 = 10 

# Call function "test" inside "mytest.py" module.
# Function "test" calculates a square of a number.

# Test1 with data1=2. Test answer1 is 4.
# This is the correct answer, test should pass.
result = mytest.test(data1, answer1)
print("Result1: ", result)

# Test2 with data2=3.  Test answer2 is 10.
# This is the wrong answer, test should fail.
result = mytest.test(data2, answer2)
print("Result2: ", result)

Второй файл mytest.py , который имеетфункция test .Этот файл загружается только один раз.

# testing module, named mytest.py

def test(data, answer):
    if data:
        # If data exists, compare with answer.
        if answer == data * data:
            return "Pass"
        else:
            return "Fail"  

# Call test function.
# result = test(2, 4)
# print(result)            

# result = test(3, 10)
# print(result)  

Перезагрузка необходима только при изменении параметра внутри файла mytest.py .Для тестирования обычным рабочим процессом является передача новых параметров в файл тестирования, а не попытка изменить эти параметры из файла теста.Я вижу, что перезагрузка часто используется в ноутбуках Jupyter, где люди испытывают различные параметры в одном большом проекте, который разделен на несколько ноутбуков.Отдельные записные книжки не выполняют другой функции.Они разделены, чтобы сделать каждый файл короче, но все файлы составляют одну единицу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...