A la veille du début du cours « Python QA Engineer » , une traduction de matériel utile a été préparée pour les futurs étudiants et toutes les personnes intéressées par le thème des tests.
Nous vous invitons également à regarder la leçon de démonstration de cadeaux sur le thème «Carrière d'assurance qualité».
Il y a beaucoup de débats dans la communauté des tests sur le nombre d'assertions qui devraient être dans un test d'interface utilisateur automatisé. Certaines personnes pensent qu'il devrait y avoir une assertion par test, c'est-à-dire que chaque test ne doit vérifier qu'un seul élément. D'autres sont très heureux que leur test vérifie plusieurs éléments à la fois.
Quelle que soit l'approche que vous choisissez, je pense qu'il est prudent de dire que les tests doivent rester clairs, concis, lisibles et, bien sûr, faciles à maintenir. Personnellement, je n'ai aucun problème avec plusieurs assertions dans un test, car je me concentre sur un domaine fonctionnel.
Par exemple, prenons un formulaire d'inscription:
, , , . , — , , .
, , .
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.
- - " QA".