pytest前后置
定义fixture:
- 创建conftest.py文件(位置不同,作用范围不同),文件中保存前置和后置。使用时不需要导入此文件
- 定义一个函数:包含前置操作、后置操作
- 把函数声明为fixture:在函数上面加上@pytest.fixture(作用级别=默认为function)
- function:默认范围,每个函数或方法都会调用
- class:每个类调用
- module:每个.py文件调用一次,文件中可以有多个function和class
- session:多个文件调用一次,可以跨文件,如在.py文件中,
- fixture的定义:
- 有返回值,将返回内容写在yield后面
- 测试用例中,调用有返回值的fixture函数时,韩式名称就是代表其返回值
- 测试用例中,函数名称作为用例的参数
- 多个fixture间调用
- 调用时只需调用最后的fixture方法,此方法调用其他fixture方法
- fixture自动应用
- 在fixture中添加autouse=True
import pytest
from selenium import webdriver@pytest.fixture(scope="session")
def open_url():
driver = webdriver.Chrome()
driver.get("[http://www.baidu.com](http://www.baidu.com/)")
yield driver
driver.quit()# @pytest.fixture(scope="session")
@pytest.fixture(scope="session", autouse=True)
def refresh_page(open_url):
yield
open_url.refresh()
import time
import pytest
# 运行时会自动调用
# @pytest.mark.usefixtures("open_url")
# @pytest.mark.usefixtures("refresh_page")
class TestPytest:
@pytest.mark.smoke
def test_smoke(self):
print(6*"=", "smoke", 6*"=")
# open_url.get("[https://www.sina.com.cn](https://www.sina.com.cn/)")
time.sleep(6)
print("test_smoke 方法执行了。。。")
assert 1 == 1