L'automatisation est un élément essentiel du développement et des tests de logiciels modernes. Cela permet de gagner du temps, de réduire les erreurs manuelles et de garantir la cohérence entre les processus. Le framework Pytest est l'un des outils les plus populaires et les plus puissants pour automatiser des tâches en Python, notamment lors des tests. Il est léger, facile à utiliser et propose de nombreux plugins et fonctionnalités intégrées pour simplifier le processus d'automatisation.
Dans cet article, nous explorerons les meilleures façons d'automatiser les tâches à l'aide du framework Pytest. Nous passerons en revue trois exemples pratiques, démontrant comment Pytest peut automatiser efficacement différents types de tâches.
Pourquoi Pytest ?
Avant de plonger dans les exemples, voyons pourquoi Pytest est un excellent choix pour l'automatisation des tâches :
Simplicité : Pytest a une syntaxe simple et concise, ce qui facilite l'écriture et la lecture de cas de test.
Extensibilité : avec une large gamme de plugins et de hooks, Pytest peut être étendu pour prendre en charge différents besoins de tests.
Luminaires : Pytest fournit des luminaires, qui constituent une fonctionnalité puissante pour configurer des conditions préalables ou des états pour les tests, améliorant ainsi la réutilisabilité.
Intégration : Pytest s'intègre bien à d'autres outils, notamment les plateformes CI/CD, permettant une automatisation de bout en bout.
Exemple 1 : Automatiser les tests d'API avec Pytest
Les API constituent l’épine dorsale de nombreuses applications et il est essentiel de garantir leur fiabilité. Pytest, ainsi que la bibliothèque de requêtes, facilitent l'automatisation des tests d'API.
Étape 1 : Installer les bibliothèques requises
Tout d’abord, assurez-vous que Pytest et la bibliothèque de requêtes sont installés :
requêtes pytest d'installation pip
Étape 2 : Écrivez le script de test
Automatisons une simple requête GET vers une API publique comme JSONPlaceholder, une fausse API REST en ligne pour les tests.
`demandes d'importation
importer pytest
BASE_URL = "https://jsonplaceholder.typicode.com"
@pytest.fixture
def api_client() :
# Cet appareil fournit un objet de session pour effectuer des requêtes API
session = requêtes.Session()
séance de rendement
session.close()
def test_get_posts(api_client) :
# Envoyez une requête GET pour récupérer les publications
réponse = api_client.get(f"{BASE_URL}/posts")
# Assertions
affirmer réponse.status_code == 200
assert len(response.json()) > 0, "Aucun message trouvé"`
Explication :
Luminaire (api_client) : Ce luminaire configure une session réutilisable pour effectuer des requêtes HTTP, garantissant que nous n'avons pas besoin de créer une nouvelle session à chaque fois.
Fonction de test (test_get_posts) : cette fonction envoie une requête GET au point de terminaison /posts et vérifie que :
Le code d'état est 200, indiquant le succès.
La réponse contient au moins un message.
Étape 3 : Exécutez le test
Pour exécuter le test, exécutez la commande suivante :
bash
Copier le code
pytest -v test_api.py
Pourquoi ça marche
Le test est concis et réutilisable, exploitant les appareils de Pytest pour gérer l'installation et le démontage.
Le résultat de Pytest indique quels tests ont réussi ou échoué, ce qui facilite le suivi de la fiabilité de l'API au fil du temps.
Exemple 2 : Automatiser les tests de l'interface utilisateur Web avec Pytest et Selenium
Les tests de l'interface utilisateur Web garantissent que l'interface d'une application se comporte comme prévu. Pytest peut être combiné avec Selenium pour automatiser ces tâches efficacement.
Étape 1 : Installer les bibliothèques requises
Installez Pytest, Selenium et WebDriver Manager :
pip installe pytest sélénium webdriver-manager
Étape 2 : Écrivez le script de test
Voici comment automatiser un simple test d'interface utilisateur Web qui vérifie une fonction de recherche sur Google :
`importer pytest
à partir du pilote Web d'importation de sélénium
à partir de selenium.webdriver.common.by import By
à partir de selenium.webdriver.common.keys importer des clés
à partir de webdriver_manager.chrome, importez ChromeDriverManager
@pytest.fixture
navigateur def() :
# Configurer le Chrome WebDriver
driver = webdriver.Chrome(ChromeDriverManager().install())
générateur de rendement
driver.quit()
def test_google_search(navigateur) :
# Accédez à Google
navigateur.get("https://www.google.com")`{% endraw %}
# Find the search box and enter a query search_box = browser.find_element(By.NAME, "q") search_box.send_keys("Pytest Automation") search_box.send_keys(Keys.RETURN) # Assert that results are shown results = browser.find_elements(By.CSS_SELECTOR, "div.g") assert len(results) > 0, "No search results found"
Explication :
Luminaire (navigateur) : ce luminaire configure une instance Chrome WebDriver à l'aide de webdriver-manager et garantit qu'elle est correctement fermée après chaque test.
Fonction de test (test_google_search) : Cette fonction :
Ouvre la page d'accueil de Google.
Recherche «Pytest Automation».
Affirme que la recherche renvoie au moins un résultat.
Étape 3 : Exécutez le test
Exécutez le test avec :
{% raw %}pytest -v test_ui.py
为什么这有效
Pytest 的固定装置管理浏览器实例,使测试设置和拆卸干净高效。
使用 Selenium,脚本像真实用户一样与网页交互,确保 UI 按预期运行。
示例 3:使用 Pytest 和 Pandas 自动进行数据验证
数据验证在数据工程、分析和 ETL 过程中至关重要。 Pytest 可以使用 pandas 库自动执行数据验证任务。
第 1 步:安装所需的库
确保安装了 Pytest 和 Pandas:
pip install pytest pandas
第2步:编写测试脚本
让我们自动化执行一个任务,验证数据集是否满足某些条件(例如,没有空值、正确的数据类型等)。
`导入 pytest
将 pandas 导入为 pd
@pytest.fixture
defsample_data():
# 创建一个示例 DataFrame
数据 = {
“名字”:[“爱丽丝”,“鲍勃”,“查理”,“大卫”],
“年龄”: [25, 30, 35, 40],
“电子邮件”:[“alice@example.com”,“bob@example.com”,无,“david@example.com”]
}
df = pd.DataFrame(数据)
返回 df
def test_data_not_null(sample_data):
# 检查DataFrame中是否有空值
断言sample_data.isnull().sum().sum() == 0,“数据包含空值”
def test_age_column_type(sample_data):
# 验证“age”列是否为整数类型
断言sample_data['age'].dtype == 'int64',“年龄列不是整数类型”`
说明:
Fixture (sample_data):这个fixture设置一个示例DataFrame,模拟一个可以在多个测试中重复使用的数据集。
测试函数(test_data_not_null):此测试检查 DataFrame 中是否存在空值,如果发现则失败。
测试函数(test_age_column_type):该测试验证age列是否为整数类型,保证数据一致性。
第 3 步:运行测试
使用以下命令执行测试:
pytest -v test_data.py
为什么有效
Pytest 的灵活性允许以数据为中心的测试,确保数据集满足预期标准。
该夹具可以轻松设置和修改测试数据,而无需重复代码。
使用 Pytest 自动化任务的最佳实践
使用夹具进行安装和拆卸:夹具有助于有效管理安装和拆卸,使您的测试模块化且可重用。
利用插件:Pytest 拥有各种插件(例如,用于 HTML 报告的 pytest-html、用于并行执行的 pytest-xdist)来增强您的自动化工作。
参数化测试:使用@pytest.mark.parametrize测试多组数据或输入,减少代码重复。
与 CI/CD 管道集成:将 Pytest 测试与 Jenkins 或 GitHub Actions 等 CI/CD 工具集成以进行持续测试。
结论
Pytest 是一个强大的工具,可自动执行从 API 和 Web UI 测试到数据验证的各种任务。它的简单性、灵活性和广泛的插件支持相结合,使其成为开发人员和 QA 工程师的绝佳选择。通过利用 Pytest 的功能(例如固定装置、参数化以及与 CI/CD 管道的集成),您可以构建健壮、可维护且可扩展的自动化框架。
如果您希望自动化工作流程或增强测试过程,Pytest 是一个很好的起点。测试愉快!
以上是使用 Pytest 自动化您的任务:带有示例的实用指南的详细内容。更多信息请关注PHP中文网其他相关文章!