Python 测试运行失败:局部变量'';分配前参考
长期读者,第一次海报 我一直致力于在我的工作场所建立第一套自动化系统,同时自学我的第一门编程语言。最终目标是建立一个Sikuli脚本,以便在夜间运行测试 我不断地遇到错误,感觉自己对python的基本原理缺乏理解,周围也没有人教我 函数Python 测试运行失败:局部变量'';分配前参考,python,sikuli,Python,Sikuli,长期读者,第一次海报 我一直致力于在我的工作场所建立第一套自动化系统,同时自学我的第一门编程语言。最终目标是建立一个Sikuli脚本,以便在夜间运行测试 我不断地遇到错误,感觉自己对python的基本原理缺乏理解,周围也没有人教我 函数do_math解析.csv文件,进行一些计算,并以元组形式返回这些变量。然后,我将这些结果分配到一个变量中,并尝试比较它们,但我一直遇到: Test Run Failed: local variable 'D2LAverage' referenced before
do_math
解析.csv文件,进行一些计算,并以元组形式返回这些变量。然后,我将这些结果分配到一个变量中,并尝试比较它们,但我一直遇到:
Test Run Failed: local variable 'D2LAverage' referenced before assignment
我曾尝试在许多不同的地方分配d2lavarge,使其成为全局的,返回列表与元组,但它总是被卡住
-调用上面的dou\u math
do_math()
results = do_math()
# Specify the path
path = 'C:/Users/AeosFactory/Desktop/'
# Specify the file name
file_name = "Latency_Results" + "_" + str(datetime.datetime.now().strftime('%Y-%m-%d_%H_%M_%S')) + ".txt"
# Create a file at specified location and do comparison
with open (os.path.join(path, file_name), 'a+') as Latency_Results:
if results[0] <= 85:
Latency_Results.write("Pass" + " - " + "4 Screens, Image Mode 1, Surgery, Live, HC, D2L Average:" + " " + str(round(D2LAverage,2)) + '\n')
else:
Latency_Results.write("Fail" + " - " + "4 Screens, Image Mode 1, Surgery, Live, HC, D2L Average:" + " " + str(round(D2LAverage,2)) + '\n')
if D2Lstd <= 10:
Latency_Results.write("Pass" + " - " + "4 Screens, Image Mode 1, Surgery, Live, HC, D2L Standard Deviation:" + " " + str(round(D2Lstd,2)) + '\n')
else:
Latency_Results.write("Fail" + " - " + "4 Screens, Image Mode 1, Surgery, Live, HC, D2L Standard Deviation:" + " " + str(round(D2Lstd,2)) + '\n')
if L2DAverage <= 85:
Latency_Results.write("Pass" + " - " + "4 Screens, Image Mode 1, Surgery, Live, HC, L2D Average:" + " " + str(round(L2DAverage,2)) + '\n')
else:
Latency_Results.write("Fail" + " - " + "4 Screens, Image Mode 1, Surgery, Live, HC, L2D Average:" + " " + str(round(L2DAverage,2)) + '\n')
if L2Dstd <= 10:
Latency_Results.write("Pass" + " - " + "4 Screens, Image Mode 1, Surgery, Live, HC, L2D Standard Deviation:" + " " + str(round(L2Dstd,2)) + '\n' + '\n')
else:
Latency_Results.write("Fail" + " - " + "4 Screens, Image Mode 1, Surgery, Live, HC, L2D Standard Deviation:" + " " + str(round(L2Dstd,2)) + '\n' + '\n')
do_math()
结果=做数学()
#指定路径
路径='C:/Users/AeosFactory/Desktop/'
#指定文件名
file_name=“Latency_Results”+“”+str(datetime.datetime.now().strftime(“%Y-%m-%d_%H_%m_%S”)+”.txt
#在指定位置创建文件并进行比较
以open(os.path.join(path,file_name),“a+”作为延迟结果:
如果结果[0](全局变量除外),则python文件之间不会共享变量。如果您查看start\u script.py
中的内容,您永远不会在任何地方定义D2LAverage。当您试图在if语句中使用它时,会引发一个错误,因为Python“不知道您在说什么”。我认为让您感到困惑的是,返回值的名称暴露在调用函数的范围内。返回的只是返回值本身
在do_math()
的末尾有一行return D2LAverage、D2Lstd、L2DAverage、L2Dstd
,因为Python只允许每个函数返回一个值,这些值被打包到一个元组中
在start\u script.py
中调用do\u math()
两次
- 一次,不捕获返回值
- 一旦将返回值分配给
结果
如果您只关心函数的结果,那么可能需要删除对它的第一次调用
要访问由do_math()
返回的单个值,您可以通过将results[0]
索引到元组直接访问所需值,或者使用元组解包将4个返回值分配给单个变量,类似于D2LAverage、D2Lstd、L2DAverage、,L2Dstd=results
在为结果[0]
执行此操作后,您似乎忘记了为结果编制索引。您可以尝试保持这种方式,方法是按如下方式解压缩结果:D2LAverage,D2Lstd,L2DAAverage,L2Dstd=results
调用do\uMath
后替换结果[0]
带有D2LAverage
do_math()
results = do_math()
# Specify the path
path = 'C:/Users/AeosFactory/Desktop/'
# Specify the file name
file_name = "Latency_Results" + "_" + str(datetime.datetime.now().strftime('%Y-%m-%d_%H_%M_%S')) + ".txt"
# Create a file at specified location and do comparison
with open (os.path.join(path, file_name), 'a+') as Latency_Results:
if results[0] <= 85:
Latency_Results.write("Pass" + " - " + "4 Screens, Image Mode 1, Surgery, Live, HC, D2L Average:" + " " + str(round(D2LAverage,2)) + '\n')
else:
Latency_Results.write("Fail" + " - " + "4 Screens, Image Mode 1, Surgery, Live, HC, D2L Average:" + " " + str(round(D2LAverage,2)) + '\n')
if D2Lstd <= 10:
Latency_Results.write("Pass" + " - " + "4 Screens, Image Mode 1, Surgery, Live, HC, D2L Standard Deviation:" + " " + str(round(D2Lstd,2)) + '\n')
else:
Latency_Results.write("Fail" + " - " + "4 Screens, Image Mode 1, Surgery, Live, HC, D2L Standard Deviation:" + " " + str(round(D2Lstd,2)) + '\n')
if L2DAverage <= 85:
Latency_Results.write("Pass" + " - " + "4 Screens, Image Mode 1, Surgery, Live, HC, L2D Average:" + " " + str(round(L2DAverage,2)) + '\n')
else:
Latency_Results.write("Fail" + " - " + "4 Screens, Image Mode 1, Surgery, Live, HC, L2D Average:" + " " + str(round(L2DAverage,2)) + '\n')
if L2Dstd <= 10:
Latency_Results.write("Pass" + " - " + "4 Screens, Image Mode 1, Surgery, Live, HC, L2D Standard Deviation:" + " " + str(round(L2Dstd,2)) + '\n' + '\n')
else:
Latency_Results.write("Fail" + " - " + "4 Screens, Image Mode 1, Surgery, Live, HC, L2D Standard Deviation:" + " " + str(round(L2Dstd,2)) + '\n' + '\n')