У меня есть код в нескольких файлах, например:
Основной модуль:
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 и заставить его печатать результаты каждого тестового примера по мере его запуска?






Я вижу две проблемы с вашим кодом.
Во-первых, если вы импортируете модуль с функцией, которая работает с глобальными переменными, он будет искать глобальные переменные, имеющие общее пространство имен. Например, если у вас есть модуль 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)
Итак, теперь всякий раз, когда вы импортируете тестовый пример, код будет запускаться автоматически и печатать сообщение о результате.
Это концепция, которой мне не хватало. Спасибо!
Вы пытались... импортировать модуль результатов журнала из тестовых случаев (где это необходимо); написание
logresults, чтобы иметь параметры, которые принимают значение, которое необходимо передать; а затем использовать аргументы в вызовахlogresultsдля передачи этой информации? Это работает так же, как если бы функции находились в одном модуле.