目录:
- 1.pytest简介、安装与准备
- 2.pytest命名规则
- 3.pycharm配置与界面化运行
- 4.pytest测试用例结构
- 5.pytest测试用例断言
- 6.pytest测试框架结构
- 7.计算器实战
1.pytest简介、安装与准备
前言
- 自动化测试前,需要提前准备好数据,测试完成后,需要自动清理脏数据,有没有更好用的框架?
- 自动化测试中,需要使用多套测试数据实现用例的参数化,有没有更便捷的方式?
- 自动化测试后,需要自动生成优雅、简洁的测试报告,有没有更好的生成方法
Pytest 是什么?
- pytest 能够支持简单的单元测试和复杂的功能测试;
- pytest 可以结合 Requests 实现接口测试; 结合 Selenium、Appium 实现自动化功能测试;
- 使用 pytest 结合 Allure 集成到 Jenkins 中可以实现持续集成。
- pytest 支持 315 种以上的插件;
为什么要选择 Pytest?
- 丰富的第三方插件
- 报告
- 多线程
- 顺序控制
- 简单灵活
def inc(x):
return x + 1
def test_answer():
assert inc(3) == 4
- 兼容 unittest
- 定制化插件开发
Pytest 环境安装
- 前提:本地已配置完成 Python 环境
- 第一种方式
pip install pytest
- 第二种方式 PyCharm 直接安装
运行第一个脚本
def inc(x):
return x + 1
def test_answer():
assert inc(3) == 4
实操
- 1、创建目录 Desktop(桌面)/pytestdemo1
- 2、创建文件 test_first.py
- 3、打开【terminal】 /【命令提示行 cmd】
- 4、运行 pytest 回车
2.pytest命名规则
Pytest 有哪些格式要求?
- 文件名
- 类
- 方法/函数
Pytest 测试用例编写规则是什么?
类型 | 规则 |
---|---|
文件 | test_开头 或者 _test 结尾 |
类 | Test 开头 |
方法/函数 | test_开头 |
注意:测试类中不可以添加__init__ 构造函数 |
3.pycharm配置与界面化运行
Pycharm 界面化安装 Pytest
Pycharm 默认测试执行器为Pytest
- 进入 Tools->Python Intergrated Tools
- 选择 Default test runner 为 pytest
4.pytest测试用例结构
三部分构成
- 用例名称
- 用例步骤
- 用例断言
测试用例示例
class TestXXX:
def setup(self):
# 资源准备
pass
def teardown(self):
# 资源销毁
pass
def test_XXX(self):
# 测试步骤1
# 测试步骤2
# 断言 实际结果 对比 预期结果
assert ActualResult == ExpectedResult
5.pytest测试用例断言
什么是断言?
断言(assert),是一种在程序中的一阶逻辑(如:一个结果为真或假的逻辑判断式),目的为了表示与验证软件开发者预期的结果。当程序执行到断言的位置时,对应的断言应该为真。若断言不为真时,程序会中止执行,并给出错误信息。
断言的用法
- 断言写法
assert <表达式>
assert <表达式>,<描述>
示例 1
def test_a():
assert True
def test_b():
a = 1
b = 1
c = 2
assert a + b == c, f"{a}+{b}=={c}, 结果为真"
示例 2
def test_c():
a = 1
b = 1
c = 2
assert 'abc' in "abcd"
import sys
def test_plat():
assert ('linux' in sys.platform), "该代码只能在 Linux 下执行"
6.pytest测试框架结构
测试装置介绍
类型 | 规则 |
---|---|
setup_module/teardown_module | 全局模块级 |
setup_class/teardown_class | 类级,只在类中前后运行一次 |
setup_function/teardown_function | 函数级,在类外 |
setup_method/teardown_method | 方法级,类中的每个方法执行前后 |
setup/teardown | 在类中,运行在调用方法的前后(重点) |
def setup_module():
print('资源准备:setup module')
def teardown_module():
print('资源准备:teardown module')
def test_case1():
print('case1')
def test_case2():
print('case2')
def setup_function():
print('资源准备:setup function')
def teardown_function():
print('资源销毁:teardown function')
class TestDemo:
# 执行类前后分别执行setup_class teardown_class
def setup_class(self):
print("TestDemo setup-class")
def teardown_class(self):
print("TestDemo teardown_class")
# 每个类里面的方法前后分别执行setup, teardown
def setup(self):
print('TestDemo setup')
def teardown(self):
print('TestDemo teardown')
def test_demo1(self):
print('test demo1')
def test_demo2(self):
print('test demo2')
7.计算器实战
项目简介
计算器是近代人发明的可以进行数字运算的机器。 计算器通过对加法、减法、乘法、除法等功能的运算,将正确的结果展示在屏幕上。 可帮助人们更方便的实现数字运算。一般情况下计算器除显示计算结果外,还常有溢出指示、错误指示等功能。
知识点
- 测试流程与需求分析
- bug 提交与管理
- Pytest 测试框架基本用法
- 参数化
- 异常处理
- 标签、跳过用例
- 结合 Allure 生成测试报告与项目总结
- 数据驱动
- pytest fixture 实现测试装置及参数化
- pytest conftest.py 的用法
- pytest 文件配置 pytest.ini
- 使用第三方插件控制用例的执行顺序,分布式并发执行
- 使用分层思想,实现框架的合理构建
- 了解内置插件 hook 体系,实现插件开发
操作内容
- 完整的测试流程,包含需求分析、测试计划设计、测试用例编写、测试执行、bug 的提交与管理。
- 使用思维导图完成需求分分析;提供完整测试计划模板,完成测试计划设计;应用多种测试用例设计方法,包括:等价类、边界值、错误推测法等。
- 测试执行过程中应用多种测试方法完成计算器的加法、除法运算。
- 结合项目管理工具完成 bug 的提交与管理,进行测试报告编写与项目总结。
- 编写自动化测试用例,结合 Allure 与截图技术等自动生成带截图与操作步骤的测试报告。
- 使用参数化减少代码量,提高代码的可维护性。
- 使用 mark 标签为测试用例分类
- 设置跳过、预期失败用例
- 对异常用例进行处理
- 掌握 Pytest 常用的装饰器,例如:添加标签、参数化、Fixture 等。
- 掌握 Pytest 自动化测试框架多种复杂配置,比如 pytest.ini 配置、conftest.py 配置等。
- 合理使用第三方插件,控制测试用例的执行顺序、分布式并发执行等场景。
- 掌握分层思想实现用例的分层,实现测试装置,测试数据,测试日志,测试报告等合理的框架构建。
- 开发一个插件,实现命令行传递参数