pytest框架--pytest前置和后置

文章目录

  • 一、pytest优势
  • 二、pytest前后置


一、pytest优势

  • 可以和selenium、requests、appium结合实现web自动化、接口自动化、APP自动化
  • 可跳过用例且失败用例可重跑
  • 结合allure生成美观的测试报告
  • 与Jenkins实现持续集
  • 有丰富的插件
    pytest-xdist 多线程运行
    pytest-ordering 改变测试用例执行顺序
    pytest-rerunfailures 失败用例重跑
    allure-pytest 生成allure测试报告

二、pytest前后置

1、setup/teardown 每个用例之前、之后执行一次
2、setup_class/teardown_class 每个类之前、之后执行一次

3、@pytest.fixture(scope=“作用域”,params=“数据驱动”,autouse=“自动执行”,ids=“自定义参数名”,name=“重命名”)

作用域:
function 函数级别
class 类级别
module 模块级别
session  会话级别
autouse:
True 自动执行
False 需要调用才执行

示例代码:

@pytest.fixture(scope="function",params=MySqlDB)
def get_resrc_id_fixture():
    '''获取数据源的id前置'''
    dbinfo = {
        "host": MySqlDB[0]["MySqlDB"]["host"],
        "user": MySqlDB[0]["MySqlDB"]["user"],
        "password": MySqlDB[0]["MySqlDB"]["mysql_psw"],
        "port": MySqlDB[0]["MySqlDB"]["port"]
    }
    db = DbConnect(db_cof=dbinfo, database="aio")
    select_sql = "select * from aio_resource where resrc_name='mysql数据源';"
    result = db.select(select_sql)
    print(result)
    id = result[0]["id"]
    return id

注意:

  • @pytest.fixture()一般与conftest.py一起使用
  • conftest.py名称是固定的,不可改变
  • conftest.py单独存放@pytest.fixture()方法,可以在多个py文件之间实现前置的共享
  • conftest.py里的方法不需导入,可直接使用
  • conftest.py可以有多个,可有多个不同层级

你可能感兴趣的:(pytest,python,开发语言)