1. 介绍和安装

1.1 概念

pytest 是 python 的一种单元测试框架,同自带的 UnitTest 测试框架类似,相比于 UnitTest 框架
使用起来更简洁,效率更高。

1.2 特点

  1. 非常容易上手,入门简单,文档丰富,文档中有很多实例可以参考
  2. 支持简单的单元测试和复杂的功能测试
  3. 支持参数化
  4. 执行测试过程中可以将某些测试跳过,或者对某些预期失败的 Case 标记成失败
  5. 支持重复执行失败的 Case
  6. 支持运行由 Nose,UnitTest 编写的测试 Case
  7. 具有很多第三方插件,并且可以自定义扩展
  8. 方便的和持续集成工具集成

1.3 安装

pip3 install pytest

安装校验

  1. 进入命令行
  2. 输入命令 pytest --version 会展示当前已安装版本
  3. 运行方式

代码准备



test_login.py
class TestLogin:
def test_a(self): # test开头的测试函数
print("------->test_a")
assert 1 # 断言成功
def test_b(self):
print("------->test_b")
assert 0 # 断言失败

运行方式分为两种:
命令行模式【建议】
命令行中执行 pytest -s test_login.py
主函数模式
在 test_login.py 文件中增加主函数

if __name__ == '__main__':
pytest.main(["-s", "login.py"])
-s 表示支持控制台打印,如果不加,print 不会出现任何内容
运行结果
test_login.py ------->test_a
.------->test_b
F
. 表示成功
F 表示失败

小结
建议使用命令行的形式运行,对比主函数模式更加方便

2. setup 和 teardown

应用场景
pytest 在运行自动化脚本的前后会执行两个特殊的方法,分别是 setup 和 teardown 。在执行脚本
之前会执行 setup 方法,在执行脚本之后会执行 teardown 方法。有了这两个方法,我们可以在
setup 中进行获取驱动对象的操作,在 teardown 中进行关闭驱动对象的操作。

3.1 函数级别方法

运行于测试方法的始末,运行一次测试函数会运行一次 setup 和 teardown。
示例代码

import pytest
class TestLogin:
# 函数级开始
def setup(self):
print("------->setup_method")
# 函数级结束
def teardown(self):
print("------->teardown_method")
def test_a(self):
print("------->test_a")
def test_b(self):
print("------->test_b")
执行结果
scripts/test_login.py ------->setup_method # 第一次 setup()
------->test_a
.------->teardown_method # 第一次 teardown()
------->setup_method # 第二次 setup()
------->test_b
.------->teardown_method # 第二次 teardown()

3.2 类级别方法

运行于测试类的始末,在一个测试内只运行一次 setup_class 和 teardown_class,不关心测试类
内有多少个测试函数。
示例代码

class TestLogin:
# 测试类级开始
def setup_class(self):
print("------->setup_class")
# 测试类级结束
...
def teardown_class(self):
print("------->teardown_class")
def test_a(self):
print("------->test_a")
def test_b(self):
print("------->test_b")
执行结果
scripts/test_login.py ------->setup_class # 第一次 setup_class()
------->test_a
.------->test_b
.------->teardown_class # 第一次 teardown_class()

4. 配置文件

应用场景
使用配置文件后可以快速的使用配置的项来选择执行哪些测试模块。
使用方式

  1. 项目下新建 scripts 模块
  2. 将测试脚本文件放到 scripts 中
  3. pytest 的配置文件放在自动化项目目录下
  4. 名称为 pytest.ini
  5. 命令行运行时会使用该配置文件中的配置
  6. 第一行内容为 [pytest]
    示例
[pytest]
# 添加命令行参数
addopts = -s
# 文件搜索路径
testpaths = ./scripts
# 文件名称
python_files = test_*.py
# 类名称
python_classes = Test*
# 方法名称
python_functions = test_*

addopts = -s
表示命令行参数
testpaths,python_files,python_classes,python_functions
表示 哪一个文件夹 下的 哪一个文件 下的 哪一个类 下的 哪一个函数
表示执行 scripts 文件夹下的 test 开头 .py 结尾的文件下的 Test 开头的类下的 test开头的函

Logo

一站式 AI 云服务平台

更多推荐