ich hoffe, die Fragen die nun folgen, sind noch nicht gestellt worden, sonst wäre es super, wenn ihr mir einfach einen Link teilen könnt. Ich kann mir gut vorstellen, dass das bereits ein Thema gewesen ist aber mit den von mir verwendeten Keywords, bin ich nicht so richtig fündig geworden und wäre sehr glücklich über eine Hilfe, wo ich ggf. schauen muss oder suchen kann...
Hintergrund:
Ich 'versuche' eine Testsuite für Requests Abfragen zu schreiben. Der Test läuft durch aber mir gefällt der Code noch nicht.
Nur falls die Frage aufkommt, ich möchte die Ergebnisse die ich mit Selenium erhalte, mit den Ergebnissen von Requests vergleichen.
Nun habe ich also für mein Prove of Concept einen 'dummy Code' entwickelt und möchte diesen nun optimieren.
Problem/ Optimierungsbedarf:
(Da der Code zu lange wäre, um diesen hier zu teilen, ein Beispiel)
Nun sieht die Logik meines Codes wie folgt aus:
Code: Alles auswählen
class testSuite():
def test1():
print("something")
def test2():
print("something")
def test3():
print("something")
ff = testSuite()
ff.test1()
ff.test2()
ff.test3()
...
schreibt jede aufgerufene URL über die append funktion dann ein,
öffnet eine txt datei und schreibt dort die Seitenspezifischen Daten bspw. Url oder response Status rein.
Soweit so gut. Das ganze klappt dann auch mit py.test oder unittest usw.
aber auf dieser Art und Weise bin ich schnell bei mehreren hunderten von Zeilen Code, was ja ganz bestimmt nicht the 'state of the art' ist oder wie es so schön heißt 'pythonic'.
Also was wäre ein eleganterer weg?
Natürlich könnte ich die URLs direkt aus einer CSV Datei abrufen, gemäß der Logik:
sites = ['alpha', 'beta', 'gamma']
for site in sites:
print(sites[0])
break
aber dann müsste a) immer auch die Position angeben werden und würde die Länge des Codes nicht wesentlich verringern. Zudem machen die Methoden für jeden einzelnen Schritt in meinem jetzigen Stadium durchaus Sinn, da ich dann schneller weiß, wo der Fehler ist und es ist leichter zu debuggen. Oder habe ich hier einen Denkfehler? Deswegen war meine Überlegung, ob es nicht eine andere Möglichkeit gibt, bspw. die ganzen Methoden als Liste zusammenzufassen.
Kann man etwas schreiben wie main = [def test01, def test02, def test03]? Ich habe das noch nie gesehen, und es sieht irgendwie "verboten" aus.
Über Tips oder Ideen würde ich mich sehr freuen.
Vielen Dank.
Informationen:
Python Version: 3.7
OS: Windows10/ Linux Ubuntu 16.04
IDE: PyCharm Education Edition 2019
PS: Ich bin neu indem Forum, sollte ich irgendeine Regel übersehen haben oder etwas besser machen können, gebt bitte Bescheid, damit es beim nächsten mal besser machen kann.