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

    推荐阅读