PyTest


一、简介
单元测试框架
测试发现
测试执行
测试判断(断言判断预期记过和实际结果的差异)
测试报告(进度,耗时,通过率)
自动化测试框架∈单元测试框架
pytest可以和selenium,requests。appium结合实现web自动化,接口自动化, app自动化
pytest-html:生成html的自动化测试报告
pytest-xdist:测试用例分布式执行,多cpu分发
pytest-ordering:改变测试用例执行顺序
pytest-rerunfailures:用例失败后重跑
  • -reruns times --reruns-delay time
allure-pytest:用于生成测试报告
pytest-repeat
  • -count=2 --repeat-scope=module
二、默认测试用例规则以及基础应用
  1. 模块名必须以test_开头或者_test结尾
  1. 测试类必须以Test开头,并且不能有init方法
  1. 测试方法必须以test开头
三、运行方式
  1. 主函数方式
  • 运行所有:pytest.main()
  • 运行指定模块:pytest.main(["参数","运行模块"])
  • 指定目录:pytest.main(["参数","./test_1.py"])
  • 通过nodeid:pytest.main(["参数","./test_1.py::Test01::test_04"])
  1. 命令行方式
  • 同主函数方式
  • pytest 参数 运行模块
  1. 通过读取pytest.ini配置文件运行
  • 位置:一般放在项目根目录
  • 编码:ANSI
  • 作用:改变pytest默认行为
  • 运行的规则:主函数和命令行规则都会读取该文件
  • 格式:
参数详解:
  • s:输出调试信息,包括print打印的信息
  • v:显示更详细的信息
  • vs:两个参数一起使用
  • n:支持多线程或者分布式运行 pytest.main(['-vs','test_01.py','-n=2'])/pytest test_01.py -n 2
  • -reruns NUM:失败用例重跑2次 pytest test_01.py -reruns 2
  • x:只要有一个测试用例失败则所有重跑
  • -maxfail=2:最大失败测试用例就停止
  • k:根据测试用例的部分字符串指定测试用例 pytest -vs /testcase -k 'te'
  • -html 目录+文件名.html:生成报告
四、执行顺序
  1. 默认从上到下执行
  1. @pyrest.mark.run(order=NUM)
五、分组执行(冒烟、分模块执行、分接口和web执行)
  • smoke:冒烟用例
    • @pytest.mark.smoke
六、pytest跳过用例
  1. 无条件跳过
2.有条件跳过
七、前后置(固件、夹具)处理
  1. setup/teatdown,setup_class/teardown_class
  1. 使用@pytest.fixture装饰器来实现*部分*用例的前后置
参数详解:
  • scope表示的是作用域:在每个作用域执行一次:function(默认),class,module,package/session
  • params:参数化,支持list[],元祖(),字典{}
  • fixture带['1','2','3']会执行三次
  • autouse=True:自动使用fixture,默认False
  • ids:当使用params参数化时,给每一个值设置一个变量名,意义不大
  • name:给表示的是被@pytest.fixture()标记的方法取一个别名,若起了别名之后,使用原函数名无法调用
传值:
  1. 通过conftest.py和@pytest.fixture()结合使用实现全局的前置应用(比如:项目的全局登录,模块的全局处理)
  • conftest.py是单独存放的一个夹具文件,文件名是不可更改的
  • 可以在不同的py文件中使用同一个conftest.py函数
  • 不需import
总结:
  • setup/teardown,setup_class/teardown_class作用于所有用例或者所有的类
  • @pytest.fixture()作用既可以是部分也可以是全部前后置
  • conftest.py和@pytest.fixture()结合使用作用于全局的前后置
七、断言
  • assert
八、pytest结合allure-pytest插件生成allure测试报告
  1. 生成json格式的临时报告
  1. 生成allure报告
临时json 输出 生成报告路径 清空原有报告
九、@pyrest.mark.parametrize()基本用法
十、YAML文件详解--实现接口自动化
  1. 用于全局的配置文件 ini、yaml
  1. yaml简介:
yaml是一种数据格式,支持注释、换行、多行字符串、裸字符串(整型、字符串)
  1. 语法规则:
  • 区分大小写
  • 使用缩进表示层级,但只能用空格
  • 缩进是没有数量的,只要对齐就是同一层级
  • 注释是#
  1. 数据组成:
  • Map对象:键值对:key:+空格+value
    • 一行的写法:msxy:{name:phil,age:18}
  • 数组(list):用-开头
    • 一行的写法:[]
  1. 读取:转化为字典:
十一、yaml接口自动化实战
  1. 断言的封装
  1. allure报告的定制
  1. 关键字驱动和数据驱动结合实现接口自动化测试
  1. python的反射
  1. jenkins的持续集成和allure报告集成,并且根据自动化报告的错误率发送邮件
  1. 文件和读取
      • yaml_file:
      • test_Api.py:
 

Robot Framework


一、基础
  1. RF项目文件夹
  • 项目文件夹(project)
  • 用例集(suite.robot)
  • 测试用例(test case)
  1. 设置区域
  1. RF关键字驱动
  • 用一个关键字完成某一个功能,以期望解决我们的问题
  1. 数据类型
  • 需要的库Collections
    • 变量
    • 数组
    • 调用接口传参数的时候,可以用数组
    • 字典
    • json
  1. 分支和循环
  • 条件运算
  • 比较:
    • 数值比较:> < ==
    • 字符串比较:
    • 字符串操作变量也要加引号
      • 判断包含
      • 循环
        1. 字符串处理
        • 直接写 不用+号
          • 或Catenate SEPARATOR(两个字符串中间间隔)=---
        二、接口自动化
        1. 软件测试阶段
          1. 单元测试、集成测试、系统测试、回归测试
            探索性测试:针对接口验证是否成功发包,即可自动化
        1. 用例内容要包括输入参数集合
        1. 怎么做接口测试
        • 初始化测试数据
        • 发包收包
        • 断言,校验结果
        • 分析原因(自动化做不了)
        1. RF接口自动化
        badge