Der vorherige Artikel fasst hauptsächlich die allgemeinen Probleme zusammen, auf die Sie bei der Verwendung des Minium-Automatisierungsframeworks stoßen, d. h. die allgemeinen Probleme bei der Installation von Minium, und die Probleme und Lösungen, die häufig bei der Verwendung von Minium auftreten, einschließlich der Initialisierung und Ausführung von Anwendungsfällen.
Das unvollständige Laden von Seiten ist einer der häufigsten Gründe dafür, dass Minium-Testfälle auf echten Geräten fehlschlagen .
Der Hauptgrund ist, dass das Schreiben von Fällen im Allgemeinen auf Entwicklertools (Windows- oder Mac-Computern) erfolgt. Im Allgemeinen sind die Internetgeschwindigkeit und die Reaktionsgeschwindigkeit des realen Computers viel langsamer als die des Entwicklertools .
Wenn der Code die Methode sleep
verwendet , einige Sekunden zu warten, bevor eine Operation ausgeführt wird, ist es wahrscheinlich, dass die Wartezeit auf dem Entwicklertool ausreicht, um erfolgreich ausgeführt zu werden, aber das echte Gerät benötigt eine längere Wartezeit zum Laden und Abschließen, wodurch die Anwendungsfall zum Scheitern.
Die folgende Abbildung ist ein Beispiel für einen Anwendungsfall, bei dem der Test aufgrund eines unvollständigen Seitenladens fehlschlägt , wenn der Cloud-Testdienst einen Fall auf einem realen Computer ausführt
Wenn der laufende Test aufgrund des unvollständigen Ladens der Seite fehlschlägt , können Sie das Problem mit den folgenden Methoden beheben
1. Überprüfen Sie zuerst das Netzwerkprotokoll, um herauszufinden, warum die Seite nicht geladen wird
Klicken Sie im Cloud-Messdienst zunächst auf die Netzwerkanforderungsdetails, um das Netzwerkanforderungsprotokoll anzuzeigen.Sie können auf die folgenden Aspekte achten:
- Ob der Anforderungsstatuscode
200
. Im Allgemeinen können die Statuscodes 4xx und 5xx ein Clientproblem oder ein Serververbindungsproblem sein. Dies kann beispielsweise durch die Notwendigkeit verursacht werden, den Proxy für den Zugriff auf den Server usw. zu konfigurieren. - Achten Sie auf den Zeitverbrauch der Anfrage, um festzustellen, ob es sich um ein Netzwerkproblem handelt oder die Netzwerkgeschwindigkeit relativ langsam ist
- Achten Sie auf die zurückgegebene Antwort. Manchmal ist der Netzwerkstatuscode normal und die zeitaufwändige Anfrage normal, aber die Antwort gibt einen Nullwert zurück, und es sollten unter normalen Umständen entsprechende Daten vorhanden sein, was auch zu einem weißen Bildschirm auf der Seite führen kann. Zu diesem Zeitpunkt können Sie überprüfen, warum die Rückgabe vom Hintergrundserver leer ist, oder die Mock-Anforderungsmethode verwenden , um den korrekten Rückgabewert über die Mock-Methode zurückzugeben
2. Optimierung des Verzögerungscodes für Anwendungsfälle
Wenn festgestellt wird, dass der reale Computer sleep
nicht genügend Zeit hat und die Seite nicht geladen wird, wird empfohlen, den Ruhezustand nicht zum Warten zu verwenden. Sie können je nach Bedarf zwischen den folgenden Wartemethoden wählen:
- wait_for_page()
wartet darauf, dass die Seite erfolgreich springt
ret = self.app.wait_for_page("/pages/testpage/testpage")
self.assertTrue(ret, "wait success")
- wait_util()
wartet darauf, dass die Seite asynchron geladen wird
ret = self.app.wait_util(0, 5) # 5s内, 页面没有任何未完成的异步请求
self.assertTrue(ret, "wait success")
- wait_for()
wartet bis die angegebene Bedingung erfüllt ist, die Bedingung kann ein Seitenelement, eine benutzerdefinierte Funktion oder die Wartezeit (in Sekunden) sein
ret = self.page.wait_for(".waitfor", max_timeout=2)
self.assertTrue(ret, "wait success")
- wait_data_contains()
wartet darauf, dass bestimmte Schlüssel in Page.data erscheinen
keys = ("testwait", "waitkeys.b")
ret = self.page.wait_data_contains(*keys, max_timeout=3)
# 2s后,page.data={testwait: 1, waitkeys: {a: 1, b: false}}
# 4s后 page.data = {}
self.assertTrue(ret, "wait success")