Pytest-Check Assert-Methode nicht blockierende Fehler

Am Vorabend des Beginns des Kurses " Python QA Engineer " wurde eine Übersetzung nützlichen Materials für zukünftige Studenten und alle am Thema Testen Interessierten vorbereitet.



Wir laden Sie auch ein, sich eine Demo-Lektion zum Thema "QA-Karriere" anzusehen .










In der Test-Community wird viel darüber diskutiert, wie viele Asserts in einem automatisierten UI-Test enthalten sein sollten. Einige Leute denken, dass es eine Behauptung pro Test geben sollte, das heißt, jeder Test sollte nur ein Element überprüfen. Andere sind sehr froh, dass ihr Test mehrere Elemente gleichzeitig überprüft. 





Welchen Ansatz Sie auch wählen, ich denke, man kann mit Sicherheit sagen, dass Tests klar, präzise, ​​lesbar und natürlich leicht zu warten sein sollten. Persönlich habe ich kein Problem mit mehreren Asserts in einem Test, da ich mich auf einen Funktionsbereich konzentriere.





Nehmen wir zum Beispiel ein Registrierungsformular:





, , , . , — , , . 





, , .





assert Python , . . , . , , , assert- .





-. , , , , , , assert.





: Pytest-check

Pytest-check ( ) – Pytest, assert- pass/fail. , 3 assert- fail, Pytest-check 2. , , fail.





Python OpenSDK TestProject Pytest, pytest Selenium, TestProject. HowQA,





, Pytest-check.





Selenium

. : https://docket-test.herokuapp.com/register





import selenium.webdriver as webdriver
from selenium.webdriver.common.by import By
def test_register_user():
    # Arrange
    url = "https://docket-test.herokuapp.com/register"
    # set the driver instance
    driver = webdriver.Chrome()
    # browse to the endpoint
    driver.get(url)
    # maximise the window
    driver.maximize_window()
    # Act
    # Complete registration form
    # enter username value
    driver.find_element(By.ID, "username").send_keys("Ryan")
    # enter email value
    driver.find_element(By.ID, "email").send_keys("Test@email.com")
    # enter password value
    driver.find_element(By.ID, "password").send_keys("12345")
    # enter repeat password value
    driver.find_element(By.ID, "password2").send_keys("12345")
    # click register button
    driver.find_element(By.ID, "submit").click()
      
      



, . assert:





# Assert
# confirm registration has been successful
# check if congratulations message contains the correct text
message = driver.find_element(By.XPATH, "/html[1]/body[1]/div[1]/div[1]/div[1]/div[1]/form[1]/div[1]").text
assert message == "Congratulations, you are now registered"
# check user is routed to login page
current_url = driver.current_url
assert current_url == "https://docket-test.herokuapp.com/login"
      
      



, :





, , assert- fail? , , :





# Assert
# confirm registration has been successful
# check if congratulations message contains the correct text
message = driver.find_element(By.XPATH, "/html[1]/body[1]/div[1]/div[1]/div[1]/div[1]/form[1]/div[1]").text
assert message == "Well done, You've Registered"
# check user is routed to login page
current_url = driver.current_url
assert current_url == "https://docket-test.herokuapp.com/register"
driver.quit()
      
      



, , URL, , , fail:





, assert. , , , , - …





, - , URL . , fail, . . .





«Congratulations, you are now registered», :





! , - URL.





, , , . , , Pytest-check.





Pytest-Check

pytest-check pip install pytest-check



. pytest-check, .





import pytest_check as check
      
      



, , assert-. assert, pytest-check . 





check.equal



, :





check.equal(message, "Congratulations, you are now registered1")
      
      



URL-, , check.is_in



.





check.is_in("login", current_url)
      
      



:





import selenium.webdriver as webdriver
from selenium.webdriver.common.by import By
import pytest_check as check
def test_register_user():
    # Arrange
    url = "https://docket-test.herokuapp.com/register"
    # set the driver instance
    driver = webdriver.Chrome()
    # browse to the endpoint
    driver.get(url)
    # maximise the window
    driver.maximize_window()
    # Act
    # Complete registration form
    # enter username value
    driver.find_element(By.ID, "username").send_keys("Ryan8")
    # enter email value
    driver.find_element(By.ID, "email").send_keys("Test@email8.com")
    # enter password value
    driver.find_element(By.ID, "password").send_keys("12345")
    # enter repeat password value
    driver.find_element(By.ID, "password2").send_keys("12345")
    # click register button
    driver.find_element(By.ID, "submit").click()
    # Assert
    # confirm registration has been successful
    # check if congratulations message contains the correct text
    message = driver.find_element(By.XPATH, "/html[1]/body[1]/div[1]/div[1]/div[1]/div[1]/form[1]/div[1]").text
    check.equal(message, "Congratulations, you are now registered")
    # check user is routed to login page
    current_url = driver.current_url
    check.is_in("login", current_url)
    driver.quit()
      
      



, . .





! , , fail. , :





# check if congratulations message contains the correct text
message = driver.find_element(By.XPATH, "/html[1]/body[1]/div[1]/div[1]/div[1]/div[1]/form[1]/div[1]").text
check.equal(message, "Congratulations, you are now registered!")
# check user is routed to login page
current_url = driver.current_url
check.is_in("1", current_url)
      
      



.





, , , , fail : , , URL. pytest, , - , fail. 





, pass.





Pytest-check. .






- "Python QA Engineer".









- - " QA".












All Articles