Python — передать переменную в модуле функции в другом модуле

У меня есть код в нескольких файлах, например:

Основной модуль:

import TC1
import TC2

Некоторые модули тестовых случаев, которые выглядят так:

testcase = "Test Case 1"
successmessage = "Specific Success Message for Test Case 1"
errormessage = "Specific Error Message for Test Case 1"

# Run test
if pageLoaded == pageExpected:
    testresult = 0
    logresults()
else:
    testresult = 1
    logresults()

И модуль результатов журнала:

def logresults():
    print("Test Results for", testcase,)
        if testresult == 0
            print(testcase, "Passed with", successmessage)
        else:
            print(testcase, "Failed with", errormessage)

Как я могу передать переменные из каждого тестового примера в logresults и заставить его печатать результаты каждого тестового примера по мере его запуска?

Вы пытались... импортировать модуль результатов журнала из тестовых случаев (где это необходимо); написание logresults, чтобы иметь параметры, которые принимают значение, которое необходимо передать; а затем использовать аргументы в вызовах logresults для передачи этой информации? Это работает так же, как если бы функции находились в одном модуле.

Karl Knechtel 15.10.2022 08:24
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
1
60
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я вижу две проблемы с вашим кодом.

Во-первых, если вы импортируете модуль с функцией, которая работает с глобальными переменными, он будет искать глобальные переменные, имеющие общее пространство имен. Например, если у вас есть модуль logresultsmodule с функцией logresults, и вы его импортируете, он будет работать только с переменными, которые выглядят следующим образом: logresultsmodule.variable

Чтобы решить эту проблему, вам придется изменить сигнатуру функции на

def logresults(testresult, testcase, successmessage, errormessage): ...

и передать соответствующие переменные.

Вторая проблема заключается в том, что вы вызываете logresults внутри условного оператора, где есть вероятность, что переменная testresult еще не определена.

Сначала оцените условное выражение, а затем вызовите logresults.

from logresultsmodule import logresults
{code that defines testcase, successmessage, errormessage}

if pageLoaded == pageExpected: 
    testresult = 0
else:
    testresult = 1
logresults(testresult, testcase, successmessage, errormessage)

Итак, теперь всякий раз, когда вы импортируете тестовый пример, код будет запускаться автоматически и печатать сообщение о результате.

Это концепция, которой мне не хватало. Спасибо!

Squoggle 17.10.2022 17:18

Другие вопросы по теме