测试开发全栈之Python自动化 Pytest 学习笔记

程序员一凡 · 2021年01月18日 · 2051 次阅读

Pytest

pytest 是一个非常成熟的全功能的 Python 测试框架,主要有以下几个特点:

  • 简单灵活,容易上手
  • 支持参数化
  • 能够支持简单的单元测试和复杂的功能测试,还可以用来做 selenium/appnium 等自动化测试、接口自动化测试(pytest+requests)
  • pytest 具有很多第三方插件,并且可以自定义扩展,比较好用的如 pytest-selenium(集成 selenium)、pytest-html(完美 html 测试报告生成)、pytest-rerunfailures(失败 case 重复执行)、pytest-xdist(多 CPU 分发)等
  • 测试用例的 skip 和 xfail 处理
  • 可以很好的和 jenkins 集成
  • report 框架----allure 也支持了 pytest

安装 Pytest

  • pip install -U pytest

Pytest 用例设计原则

  • 测试类以 Test 开头,并且不能带有 init 方法
  • 以 test_开头的函数
  • 以 Test 开头的类
  • 所有的包 pakege 必须要有__init__.py 文件
  • 断言使用 assert

运行 Pytest 的两种方式

  • Pycharm 里代码运行
pytest.main(["test.py"])
  • 命令行运行方式
pytest test.py
# 运行指定类下的指定方法
pytest 文件名::类名::方法名

Pytest 参数说明

  • -v 说明:可以输出用例更加详细的执行信息,比如用例所在的文件及用例名称等

  • -s 说明:输入我们用例中的调式信息,比如 print 的打印信息等

  • -x:遇到错误的用例,立即退出执行,并输出结果

  • -v:表示查看详细的报告内容

  • -collect-only:表示把待执行的用例全部展示出来

  • -lf:只执行上次失败的用例

  • -vv :显示详细的测试结果

  • -tb=no:不展示用例失败的错误详情

  • -tb=line:展示用例失败的代码具体行数

  • -tb=short:展示更加详细的错误信息

  • -k "关键字" 说明:执行用例包含 “关键字” 的用例

  • -q 说明:简化控制台的输出,可以看出输出信息和上面的结果都不一样, 下图中有两个..点代替了 pass 结果

  • -maxfail=num 当用例错误达到指定数量时,停止测试

  • m 说明:执行特定的测试用例。我们再次修改一下我们的用例,并添加一个新的用例

# 如果要运行多个标识的话,用表达式,如下
pytest -m "slow or faster" test_1.py  运行有slow标识或 faster标识用例
pytest -m "slow and faster" test_1.py 运行有slow和faster标识的用例
pytest -m "slow and not faster" test_1.py 运行有slow和没有faster标识的用例

注意:-m 后面不能带''号(单引号),只能带 “”(双引号),不然识别不到

ini 配置文件

  • 创建 pytest.ini 文件 (固定写法)
[pytest];固定写法

;变量名不能错
addopts=-vv -s ;多个参数中间空格
testpaths=../HC/huace ;多个目录中间空格
python_files=test*.py ;python文件前缀,可自定义
python_classes=huace ;指定类名
python_functions=test* ;指定方法名,可自定义

跳过测试函数

  • 跳过测试函数: 根据特定的条件,不执行标识的测试函数
# -*- coding: utf-8 -*-

import pytest

class Test():
    def test(self):
        print("执行的是testcase的用例")

@pytest.mark.skipif(condition=1<2,reason="1不大于2,所以不执行")
class huace():
    def haha(self):
        print("执行的是haha方法里面的用例")

Pytest 之 fixture

02 篇

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册