画布 1
自动化测试框架学习路线
  pytest
    L1
      pytest 安装
        命令行：pip install -U pytest
        界面：Pycharm 配置
      命名规则
        文件 test_开头 或者 _test结尾
        类 Test 开头
          不能包含构造函数
        方法test_开头
      pycharm 配置
        配置默认测试执行器为 pytest
      测试用例结构
        class TestXXX:
def setup_method(self):
# 资源准备
pass
def teardown_method(self):
# 资源销毁
pass
# 用例名称
def test_XXX(self):
# 测试步骤1
# 测试步骤2
# 断言 实际结果 对比 预期结果
assert ActualResult == ExpectedResult
      测试框架结构（测试装置）
        模块级(setup_module/teardown_module)模块始末，全局的（优先最高）
        函数级(setup_function/teardown_function)只对函数用例生效(不在类中)
        类级(setup_class/teardown_class)只在类中前后运行一次（在类中）
        方法级(setup_method/teardown_method)开始于方法始末（在类中）
    L2
      参数话用例
        参数化：@pytest.mark.parametrize
          参数化装饰函数
          ids参数增加可读性
      标记测试用例
        添加标记
          @pytest.mark.标签名
        执行
          pytest -s xx.py -m=标签名
      用例调度与运行
        运行单独一个文件/类/方法
          终端执行
          pytest/py.test
          pytest –v (最高级别信息--verbose) 打印详细运行日志信息
          pytest -v -s 文件名 (s是带控制台输出结果，也是输出详细)
          pytest 文件名.py 执行单独一个pytest模块
          pytest 文件名.py::类名 运行某个模块里面某个类
          pytest 文件名.py::类名::方法名 运行某个模块里面某个类里面的方法
        自动化测试中常用命令行参数
          pytest -x 文件名 一旦运行到报错，就停止 运行
          pytest --maxfail=[num] 当运行错误达到num的时候就停止 运行
          pytest -k "类名 and not 方法名” 执行某个关键字的用全
          pytest -m [标记名] @pytest.mark.[标记名] 将运行有这个标记的测试用例
          --lf, --last-failed 运行上一次执行失败的用例，上一次没有失败的则全部执行
          --ff, --failed-first 先执行上一次失败的用例，后执行上一次成功的用例
        特殊参数的用法
          pytest --collect-only 只收集用例
          pytest - - junitxml=./result.xml 生成执行结果文件
          pytest --setup-show 回溯fixture的执行过程
      异常处理
        try...except
        pytest.raises()
    L3
      数据驱动
        yaml 用法
          基本语法
            大小写敏感
            使用缩进表示层级关系
            缩进不允许使用tab，只允许空格
            缩进的空格数不重要，只要相同层级的元素左对齐即可
            '#'表示注释
          数据类型
            对象：键值对的集合，又称为映射（mapping）/ 哈希（hashes） / 字典（dictionary）
            数组：一组按次序排列的值，又称为序列（sequence） / 列表（list）
            纯量（scalars）：单个的、不可再分的值
          yaml 对象
            字典
            数组
          python 操作yaml 需要安装 pyyaml
            yaml.safe_load()
            yaml.safe_dump()
      fixture
        1、pytest fixture的作用
        2、调用方法
          直接通过函数名字调⽤
          使用装饰器@pytest.mark.usefixtures('test1')
        3、允许使用多个Fixture
        4、使用 autouse 自动应用，如果要返回值，需要传fixture函数名
        5、作用域（session>module>class>function）
        6、conftest.py 这个文件进行数据共享
        7、fixture带参数传递
    L4
      配置文件 pytest.ini
        [pytest]
markers 自定义mark 标签名
addopts 运行时参数（可添加多个命令行参数，空格分隔，所有参数与命令行一致）
python_files 自定义测试文件命名规则
python_classes = Test_* 自定义测试类命名规则
python_functions= test_* check_* 自定义测试方法命名规则
testpaths = bilibili baidu
norecursedirs = result logs datas test_demo* 运行时忽略某些文件夹
      插件
        pip install pytest-rerunfailures 失败重跑
        pip install pytest-assume 多重较验
        pip install pytest-ordering 控制用例的执行顺序
        pip install pytest-xdist 分布式并发执行测试用例
      插件开发
  allure
    安装
      allure 安装
        下载zip ：https://repo1.maven.org/maven2/io/qameta/allure/allure-commandline/
        配置bin/目录到环境变量
        allure --version
      allure-pytest 安装
        pip install allure-pytest
    运行
      1. 执行用例，搜集执行结果
        pytest --alluredir=./result --clean-alluredir
      2. 生成在线 allure 报告
        allure serve ./result
      3. 生成静态 allure 报告
        allure generate --clean alluredir result -o result/html
      4. 打开报告
        allure open -h 127.0.0.1 -p 8883 ./result/html
    用例描述
      添加用例描述
        @allure.feature()
        @allure.story()
      添加用例标题
        @allure.title()
      添加用例步骤
        @allure.step()
        with allure.step():
    添加附件
      添加日志
      添加截图
      添加视频
      添加用例链接
      添加bug链接
    定制报告