pytest fixture scope(用例执行的前后操作)

本文介绍了pytest框架中fixture的scope属性,用于控制用例执行前后的操作。例如,使用`scope='session'`可在所有用例前恢复数据库,发送通知;`scope='module'`针对每个Python文件执行前后操作;`scope='class'`应用于类级别;`scope='function'`则对应于每个测试函数的执行。通过示例代码展示了如何定义和使用这些fixture。
摘要由CSDN通过智能技术生成

设置fixture 的scope
https://docs.pytest.org/en/stable/fixture.html#fixtures

在执行自动化脚本的时候,有时需要在执行所有的用例之前或者所有的用例之后要进行某些操纵。
比如:在运行所有的用例之前需要对数据库进行恢复操作。

在项目的根目录下创建 conftest.py , pytest 在运行的时候会自动加载此文件中定义的方法。
fixture执行域 scope=“session”

所有用例执行之前和之后的操作 。

import pytest

@pytest.fixture(scope=‘session’,autouse=True)
def session_controller():
# 定义所有用例之前执行的操作
print(‘所有的用例运行之前的操作。。。。’)
yield
print(‘所有的用例运行之后的操作。。。。’)
import pytest
import requests

@pytest.fixture(scope=‘session’,autouse=True)
def session_controller():
# 定义所有用例之前执行的操作
print(‘所有的用例运行之前的操作。。。。’)
url = “https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=9d1dd035-d81c-4961-99ea-b27f33e048d8”
jsondata = {
“msgtype”: “text”,
“text”: {
“content”: “所有的用例开始执行。。。”
}
}
requests.p

作为AI语言模型,我无法在计算机上执行任何操作,因此无法提供pytest allure用例执行失败后截图。但是,以下是如何在使用pytest allure时自动截取用例执行失败截图的示例代码: ```python import allure import pytest from selenium import webdriver @pytest.fixture(scope="function") def browser(): driver = webdriver.Chrome() yield driver driver.quit() @allure.step("Open website '{url}'") def open_website(browser, url): browser.get(url) @allure.step("Click on element '{locator}'") def click_element(browser, locator): element = browser.find_element(*locator) element.click() @allure.step("Verify element '{locator}' is present") def verify_element_present(browser, locator): assert browser.find_element(*locator).is_displayed() @allure.step("Enter text '{text}' into element '{locator}'") def enter_text(browser, locator, text): element = browser.find_element(*locator) element.send_keys(text) @allure.step("Verify text '{text}' is present in element '{locator}'") def verify_text_present(browser, locator, text): assert text in browser.find_element(*locator).text def test_login_failure(browser): with allure.step("Given the user is on the login page"): open_website(browser, "https://www.example.com/login") with allure.step("When the user enters invalid credentials"): enter_text(browser, (By.ID, "username"), "invalid_username") enter_text(browser, (By.ID, "password"), "invalid_password") click_element(browser, (By.NAME, "login_button")) with allure.step("Then an error message is displayed"): verify_element_present(browser, (By.CSS_SELECTOR, ".error_message")) verify_text_present(browser, (By.CSS_SELECTOR, ".error_message"), "Invalid username or password") # Take screenshot on failure allure.attach( browser.get_screenshot_as_png(), name="Screenshot", attachment_type=allure.attachment_type.PNG, ) ``` 在测试用例失败时,pytest allure将自动捕获失败的截图并将其添加到测试报告中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值