画布 1
pytest 框架
  Pytest 测试框架- 入门
    安装
      第一种方式：命令行安装 pip install -U pytest
      第二种方式：界面安装 Pycharm 配置
    命名规则
      文件： test_开头 或者 _test结尾
      类： Test 开头（类内不能有__init__()方法）
      方法：test_开头
    执行多条用例
      运行单独一个文件/类/方法
        终端执行
          pytest/py.test
        pytest 文件名.py 执行单独一个pytest模块
        pytest 文件名.py::类名 运行某个模块里面某个类
        pytest 文件名.py::类名::方法名 运行某个模块里面某个类里面的方法
    测试用例初始化配置
      模块级
        setup_module/teardown_module
        模块始末，全局的（优先最高）
      函数级
        setup_function/teardown_function
        只对函数用例生效(不在类中)
      类级
        setup_class/teardown_class
        只在类中前后运行一次（在类中）
      方法级
        setup_method/teardown_method
        开始于方法始末（在类中）
      方法级（简写）
        setup/teardown
        运行在调用方法的前后
    pytest执行命令行参数
      pytest -x
        一旦失败立即停止执行。经常用于冒烟测试功能级别的测试， 一旦主流程走不通，立即停止执行
      pytest--maxfail=num
        失败num条用例后停止执行
      pytest-m
        用法：@pytest.mark.标签名
          标签名可以起任意英文字母（不可与内置重复）
        执行：按标签执行测试用例
      pytest -k
        执行某个关键字的用例
      pytest -s
        在终端显示print 内容，为了调试或打印一些内容
      pytest -v
        会在 console 里打印出具体哪条测试用例被运行
      --lf, --last-failed 运行上一次执行失败的用例，上一次没有失败的则全部执行
      --ff, --failed-first 先执行上一次失败的用例，后执行上一次成功的用例
      特殊参数的用法
        pytest --collect-only 只收集用例
        pytest - - junitxml=./result.xml 生成执行结果文件
        pytest --setup-show 回溯fixture的执行过程
    @pytest.mark.用法
      skip
        始终跳过该用例@pytest.mark.skipif(reson='此代码未开发完')
      skipif
        遇到特定情况，跳出该测试用例。
pytest.mark.skipif(condition,reason='功能未完成')
      xfail
        遇到特定情况，产出一个期望失败。case还是会被执行，起到提示作用，成功标为XPASS，失败标为XFAIL
    pytest.ini 配置
      [pytest]
markers 自定义mark 标签名
addopts 运行时参数（可添加多个命令行参数，空格分隔，所有参数与命令行一致）
python_files 自定义测试文件命名规则
python_classes = Test_* 自定义测试类命名规则
python_functions= test_* check_* 自定义测试方法命名规则
testpaths = bilibili baidu
norecursedirs = result logs datas test_demo* 运行时忽略某些文件夹
    参数化与数据驱动
      参数化：@pytest.mark.parametrize
        作用：通过编写一条用例，给定多个参数，
        用法：@pytest.mark.parametrize()
        参数
          name
            参数名
          value
            参数值
          ids
            为用例起别名，增加可读性（支持中文）
      数据驱动
        作用：数据驱动测试用例的动态生成
        数据格式
          csv
          json
          excel
          yaml
        yaml 用法
          安装 pip install pyyaml
            yaml.safe_load()
            yaml.safe_dump()
          基本语法
            大小写敏感
            使用缩进表示层级关系
            缩进不允许使用tab，只允许空格
            缩进的空格数不重要，只要相同层级的元素左对齐即可
            '#'表示注释
          数据类型
            对象：键值对的集合，又称为映射（mapping）/ 哈希（hashes） / 字典（dictionary）
            数组：一组按次序排列的值，又称为序列（sequence） / 列表（list）
            纯量（scalars）：单个的、不可再分的值
          yaml 对象
            字典
            数组
  Pytest 测试框架- 进阶
    pytest fixture 用法
      1、pytest fixture的作用
      2、调用方法
        直接通过函数名字调⽤
        使用装饰器@pytest.mark.usefixtures('test1')
      3、允许使用多个Fixture
      4、使用 autouse 自动应用，如果要返回值，需要传fixture函数名
      5、作用域（session>module>class>function）
      6、conftest.py 这个文件进行数据共享
      7、fixture带参数传递
    pytest 常用插件
      pip install pytest-rerunfailures 失败重跑
      pip install pytest-assume 多重较验
      pip install pytest-ordering 控制用例的执行顺序
      pip install pytest-xdist 分布式并发执行测试用例
    Allure 生成测试报告
      allure 安装
        下载zip ：https://mvnrepository.com/artifact/io.qameta.allure/allure-commandline
        配置bin/目录到环境变量
      allure-pytest 安装
      allure 测试报告中展示内容
        添加feature,story,step
        添加日志
        添加截图
        添加视频
        添加用例链接
        添加bug链接
      运行
        1、生成中间结果 pytest —alluredir=./report/
2、解析成最终报告 allure serve ./report
3、allure generate ./report
  Pytest 测试框架- 应用
    pytest 插件开发
      文档:pypi.org
      修改编码
      添加命令行参数
      打包
      发布
    自动化测试（app/web/接口）及数据驱动
    pytest 结合Jenkins 集成allure 报告并根据错误率发送邮件实现持续集成