我坐在这个问题前两个小时,不能找出问题是什么.我有一个函数,计算基于csv输入的东西.当我打印"spalte_ideal_sammlung"
的函数,它返回正确的数组:['y36', 'y11', 'y2', 'y33']
,但是当我尝试通过unittest
调用这些函数时,我得到了这个数组作为函数的返回:['y36', 'y11', 'y2', 'y33', 'y36', 'y11', 'y2', 'y33']
。知道为什么我得到这个返回值而不是正确的包含4个字符串的返回值吗?变量spalte_ideal_sammlung
已经在main.py
的主函数中定义为全局变量。
def main(): # Mittels unsere Main-Funktion rufen wir die definierte Funktion auf
global spalte_ideal_sammlung #Abspeichern unserer gefundenen idealen Spalten
spalte_ideal_sammlung = []
我在main.py
中的函数:
class LeastSquare(Berechnung): # Klasse LeastSquare erbt von Berechnung
# Überschreibe die Methode least_square_berechnung aus der Basisklasse Berechnung
def least_square_berechnung(self):
#pass
# Initialisiere eine Liste, die später die LS-Werte für die Idealen-Funktionen enthält
ls_ideal = []
# Initialisiere eine Liste, welche die Spaltenbezeichnung für die Y-Werte der Trainingsdaten enthält. Die erste Spalte enthält die x-Werte.
trainingsdaten = ["y1", "y2", "y3", "y4"]
# Wir starten ab der zweiten Spalte, weil ab hier die y werte liegen. Erste Spalte sind die X-Werte
for columns_train in training.columns[1:]:
mse = 9999
# Durchlaufe alle Spalten der Idealen-Funktionen
for columns_ideal in ideal.columns[1:]:
#Berechnung MSE
mse_zw = (mean_squared_error(training[columns_train], ideal[columns_ideal]))
if mse_zw < mse:
mse = mse_zw
spalte_ideal = ideal[columns_ideal].name
# Gefundene Werte werden ans Array übergeben.
# Da der MeanSquaredError nicht dem verlangten SquaredError entspricht, überführen wir diesen durch den Faktor 400 in Wert der gesuchten Abweichung.
ls_ideal.append(mse * len(ideal))
spalte_ideal_sammlung.append(spalte_ideal)
for i, y, k in zip(ls_ideal, spalte_ideal_sammlung, trainingsdaten):
print("Für den Trainingsdatensatz " + str(k) + " lautet der LeastSquare " + str(
i) + " die Ideale Funktion lautet " + str(y))
return spalte_ideal_sammlung
我在unittes.py
中调用了这个函数(我没有从单元测试开始,因为返回值不是我所期望的。这肯定是我的错,但我找不到错误:
import unittest
import main
class MyTestCase(unittest.TestCase):
def test_something(self):
instanz1 = main.LeastSquare()
print(instanz1.least_square_berechnung())
if __name__ == '__main__':
unittest.main()
真的很感谢任何帮助!
1条答案
按热度按时间uqcuzwp81#
可能是多次调用列表的问题,这会导致它在您的示例中多次追加,您可以添加此命令并检查它是否工作