七、python - pytest测试框架介绍

 

1. 框架特点

  • pytest:基于unittest开发,易用性好,信息更详细,插件众多
  • 1. 简单灵活,容易上手,文档丰富;
  • 2. 支持参数化,可以细粒度地控制要测试的测试用例;
  • 3. 能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium/appnium等自动化测试、接口自动化测试(pytest+requests);

2. 第三方插件

  • pytest-selenium(集成selenium)
  • pytest-html(完美html测试报告生成)
  • pytest-rerunfailures(失败case重复执行)
  • pytest-xdist(多CPU分发)
  • pytest--ordering(控制测试运行的顺序)

3. 编写规则

  • 测试文件以test_开头(以_test结尾也可以)
  • 测试类以Test开头,并且不能带有 init 方法
  • 测试函数以test_开头

4. 断言

  • 断言使用基本的assert即可

5. console常用参数

  • -v  用于显示每个测试函数的执行结果
  • -q  只显示整体测试结果
  • -s  用于显示测试函数中print()函数输出
  • -x,  --exitfirst, exit instantly on first error or failed test
  • -m  只运行带有装饰器配置的测试用例
  • -h  帮助

6. 装饰器

  • @pytest.mark.parametrize() (单个参数、多个参数)

7. 运行顺序

  • pip install pytest-ordering
  • 借助于装饰器@pytest.mark.run(order=1)控制测试运行的顺序

8. 测试报告

  • 安装pytest-html:pip install -U pytest-html  使用:py.test test_pyexample.py --html=report.html
  • 更详细的测试报告:pip install pytest-cov

9. 多进程运行

  • 安装pytest-xdist:pip install -U pytest-xdist 
  • 使用:py.test test_pyexample.py -n NUM   其中NUM填写并发的进程数。

10. 重新运行失败的用例

  • 安装 pytest- rerunfailures
  • 命令:pytest --reruns 重试次数
  • 命令:pytest --reruns 重试次数 --reruns-delay 次数之间的延时设置(单位:秒)
  • 另外也可以通过装饰器的方式配置:@pytest.mark.flaky(reruns=3, reruns_delay=5)

 

扩展:fixture

 fixture是一些函数,pytest会在执行测试函数之前(或之后)加载运行它们
            fixture中的代码可以定制
            pytest使用conftest.py文件集中管理fixture
            预处理和后处理
                    fixture的作用是为了抽离出重复的工作和方便复用,为了更精细化控制fixture(比如只想对数据库访问测试脚本使用自动连接关闭的fixture),pytest 使用作用域来进行指定fixture的使用范围 
                    在定义fixture时,通过 scope 参数声明作用域,可选项有:
                    function: 函数级,每个测试函数都会执行一次fixture;
                    class: 类级别,每个测试类执行一次,所有方法都可以使用;
                    module: 模块级,每个模块执行一次,模块内函数和方法都可使用;
                    session: 会话级,一次测试只执行一次,所有被找到的函数和方法都可用
                    最简单使用fixture方式是作为测试函数参数
                    执行结果可以清楚看到各fixture的作用域和执行顺序
            重命名

posted @ 2021-11-01 17:31  小丸子姐姐  阅读(141)  评论(0编辑  收藏  举报