Heim >Backend-Entwicklung >Python-Tutorial >So verwenden Sie Selenium, das automatisierte Python-Testtool

So verwenden Sie Selenium, das automatisierte Python-Testtool

WBOY
WBOYnach vorne
2023-05-17 10:43:371493Durchsuche

    1 Automatisiertes Testen

    Automatisiertes Testen bezieht sich auf die Automatisierung von Softwaretests, das Ausführen von Anwendungen oder Systemen unter voreingestellten Bedingungen, einschließlich normaler und abnormaler Bedingungen, und schließlich die Auswertung der laufenden Ergebnisse. Der Prozess der Umwandlung von menschengesteuertem Testverhalten in maschinelle Ausführung.

    So verwenden Sie Selenium, das automatisierte Python-Testtool

    Automatisierte Tests umfassen UI-Automatisierung, Schnittstellenautomatisierung und Unit-Test-Automatisierung. Die automatisierte Testplanung nach diesem Pyramidenmodell kann das beste Output-Input-Verhältnis (ROI) automatisierter Tests erzielen und mit geringeren Investitionen gute Vorteile erzielen.

    1.1 Unit-Test

    Die größte Investition sollte in Unit-Tests erfolgen und Unit-Tests sollten häufiger durchgeführt werden.

    Javas Unit-Testing-Framework ist Junit.

    1.2 Schnittstellentests

    Schnittstellentests sind API-Tests. Im Vergleich zur UI-Automatisierung ist die API-Automatisierung einfacher zu implementieren und stabiler in der Ausführung.

    Schnittstellenautomatisierung weist die folgenden Merkmale auf:

    • Kann in der frühen Phase des Produkts eingreifen, nachdem die Schnittstelle fertiggestellt ist

    • Der Umfang der Anwendungsfallwartung ist gering.

    • Geeignet für Projekte mit kleiner Schnittstelle Änderungen und häufige Schnittstellenänderungen

    Allgemein Zu den automatisierten Testtools für die Schnittstelle gehören RobotFramework, JMeter, SoapUI, TestNG+HttpClient, Postman usw.

    1.3 UI-Test

    Obwohl die Testpyramide uns vorschreibt, möglichst viele automatisierte Tests durchzuführen Da die API-Schicht so groß wie möglich ist, ist das automatisierte Testen der UI-Schicht näher an den Benutzeranforderungen und dem tatsächlichen Geschäft von Softwaresystemen. Und manchmal müssen wir UI-Layer-Tests durchführen.

    Merkmale der UI-Automatisierung:

    • Eine große Menge an Anwendungsfallwartung

    • Die Seite ist hochrelevant und muss nach Abschluss der Projektseitenentwicklung eingegriffen werden

    • UI-Tests eignen sich für Projekte mit kleinen Schnittstellenänderungen

    Es gibt viele Test-Frameworks für die UI-Ebene, wie z. B. AutoIT für Windows-Clienttests, Selenium für Webtests, TestPlant, eggPlant, Robot Framework, QTP usw.

    1.3.1 Vorteile automatisierter UI-Tests

    Reduzieren Sie den Personalaufwand für Regressionstests, der durch Änderungen oder die mehrphasige Entwicklung großer Systeme verursacht wird, insbesondere wenn Programmänderungen häufig sind Der Effekt ist sehr offensichtlich. Automatisierte Tests erfordern in der Anfangsphase mehr Personal, aber nach Eintritt in die Wartungsphase kann viel Personal eingespart werden. In der späteren Phase des manuellen Testens wird jedoch viel Personal für Regressionstests benötigt

    • Reduzieren Sie die Zeit für wiederholte Tests und erzielen Sie schnelle Regressionstests.

    • Erstellen Sie einen guten und zuverlässigen Testprozess, reduzieren Sie menschliche Fehler.

    • Kann immer langwierigere Tests durchführen oder es ist unmöglich, manuell zu testen ist lang genug und das automatisierte Testskript ist wiederholbar.

      Geeignet für Automatisierungsprojekte:
    • Produkttypprojekte. Bei Projekten vom Typ Produkt stellt die neue Version eine Verbesserung gegenüber der alten Version dar, und an der Funktionalität des Projekts hat sich nicht viel geändert. Die neuen und alten Funktionen des Projekts müssen jedoch wiederholt auf Regression getestet werden. Der Vorteil automatisierter Tests besteht in Regressionstests, mit denen effektiv überprüft werden kann, ob neue Fehler eingeführt und alte Fehler behoben wurden. Bis zu einem gewissen Grad können automatisierte Testtools als Regressionstesttools bezeichnet werden.
    • Mechanische und häufige Tests. Bei einem Langzeitprojekt müssen immer wieder die gleichen großen Datenmengen eingegeben werden. Zum Beispiel Kompatibilitätstests.
    • Die folgenden Projekte sind nicht für automatisierte Tests geeignet:
    Projekte mit häufigen Bedarfsänderungen, automatisierten Skripten können nicht wiederverwendet werden, Wartungskosten sind zu hoch und die Kostenleistung ist niedrig

    Der Projektzyklus ist kurz , nachdem das Automatisierungsskript kompiliert wurde. Seltene Verwendung, geringe Kostenleistung.
    • Projekte mit starkem interaktiven Charakter, Projekte, die manuelle Eingriffe erfordern, Automatisierung kann nicht implementiert werden.
    • 1.4 Automatisierter Testprozess Systemlogik, Analyse der Systemkernarchitektur.

    Design: Die Testfälle sollten klar und deutlich genug sein und eine breite und präzise Abdeckung aufweisen.
    • Implementierung: Um das Skript zu implementieren, gibt es zwei Anforderungen: eine Behauptung und eine andere sinnvoller Einsatz der Parametrisierung.
    • Ausführung: Die Ausführung des Skripts ist bei weitem nicht so einfach, wie wir es uns vorgestellt haben. Auffälligkeiten bei der Skriptausführung erfordern eine sorgfältige Analyse der Ursachen.
    • Zusammenfassung: Die Analyse der Testergebnisse und die Zusammenfassung des Testprozesses sind der Schlüssel zum automatisierten Testen.

    Wartung: Die Wartung automatisierter Testskripte ist ein Problem, das schwer zu lösen ist, aber gelöst werden muss.
    • Analyse: Eingehende Analyse der Abdeckungsrisiken automatisierter Anwendungsfälle und der Kosten für die Skriptpflege während des automatisierten Testprozesses.

    2 selenium

    Selenium是web应用中基于UI的自动化测试框架,支持多平台、多浏览器、多语言。

    早期的selenium RC已经被现在的webDriver所替代,可以简单的理解为selenium1.0 +webdriver构成,现在的Selenium2.0。通常情况下,我们使用“Selenium”一词指的是Selenium2.0。Selenium包括Selenium IDE、Webdriver和Selenium Grid三个组件。

    分别做一下介绍:

    Selenium IDE

    Selenium IDE一个用于Selenium测试的完成集成开发环境,可以直接录制在浏览器的用户操作,并且能回放,编辑和调试测试脚本。在调试过程中,你可以逐步执行或调整执行速度,并可以在底部查看日志以获取错误信息。录制的测试脚本可以以多种语言导出,比如java,C#,Python,Ruby等,方便掌握不同语言的测试人员操作。Webdriver

    Selenium RC 在浏览器中运行 JavaScript 应用,会存在环境沙箱问题,而WebDriver可以跳出JavaScript的沙箱,针对不同的浏览器创建更健壮的,分布式的,跨平台的自动化测试脚本。基于特定语言(Java,C#,Python,Ruby,Perl,JavaScript等)绑定来驱动浏览器对Web元素进行操作和验证。

    webdriver的工作原理:

    • 启动浏览器后,selenium-webdriver会将目标浏览器绑定到特定的端口,启动后的浏览器则作为webdriver的remote server。

    • 客户端(也就是测试脚本),借助ComandExecutor发送HTTP请求给sever端(通信协议:The WebDriver Wire Protocol,在HTTP request的body中,会以WebDriver Wire协议规定的JSON格式的字符串来告诉Selenium我们希望浏览器接下来做什么事情)。

    • Sever端需要依赖原生的浏览器组件,转化Web Service的命令为浏览器native的调用来完成操作。

    selenium Grid

    selenium Grid是一个服务器,提供对浏览器实例访问的服务器列表,管理各个节点的注册和状态信息。可以实现在同一时刻不同服务器上执行不同的测试脚本。

    3 selenium IDE 录制脚本

    打开Edge-插件-选择selenium IDE:

    创建一个新项目,此时左部 Test Case 窗口会有一个Untitled 的测试案例,右键点击重命名为”test”

    So verwenden Sie Selenium, das automatisierte Python-Testtool

    点击 IDE 的右上部录制按钮(小红点)开始手动录制

    在地址栏中输入待测试的网址如http://www.baidu.com,搜索关键词,这时可以看到IDE进行了录制操作。

    在页面中点击右键,可以增加检查点。

    录制结束后,点击录制按钮(小红点),结束本次手动录制。在selenium IDE 中,选中一个 Test Case,右击选择“Export 导出为test.py文件。

    将该脚本在python中运行并调试。

    # Generated by Selenium IDE
    import pytest
    import time
    import json
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.common.action_chains import ActionChains
    from selenium.webdriver.support import expected_conditions
    from selenium.webdriver.support.wait import WebDriverWait
    from selenium.webdriver.common.keys import Keys
    from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
    class TestTest():
      def setup_method(self, method):
        self.driver = webdriver.Chrome()
        self.vars = {}
      def teardown_method(self, method):
        self.driver.quit()
      def test_test(self):
        self.driver.get("https://www.baidu.com/")
        self.driver.set_window_size(809, 864)
        self.driver.find_element(By.ID, "kw").click()
        self.driver.execute_script("window.scrollTo(0,0)")
        self.driver.find_element(By.ID, "kw").send_keys("四月是你的谎言")
        self.driver.find_element(By.ID, "su").click()

    Das obige ist der detaillierte Inhalt vonSo verwenden Sie Selenium, das automatisierte Python-Testtool. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Stellungnahme:
    Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen