初识pytest
pytest单元测试框架 (1)什么是单元测试框架? 单元测试是指在软件开发过程当中,针对软件的最小单位(函数、方法)进行正确性的检查测试。 (2)单元测试框架主要做什么?
1. 测试发现:从多个文件里面找到我们的测试用例
2. 测试执行:按照一定的规则和顺序去执行,并生成结果
3. 测试判断:通过断言判断预期结果和实际结果的差异
4. 测试报告:统计测试进度,耗时,通过率,生成测试报告
单元测试框架和自动化测试框架有什么关系? (1)什么是自动化测试框架 (2)作用?
1. 提高测试效率,降低维护成本
2. 减少人工干预,提高测试准确性,增加代码的重用性
3. 核心思想是让不懂代码的人也能通过框架去实现自动化测试
(3)pytest单元测试框架和自动化测试框架的关系?
1. 单元测试框架:只是自动化测试框架的组成部分之一
2. pom设计模式:只是自动化测试框架的组成部分之一
数据驱动。。。
关键字驱动文件的封装
日志监控
requests二次封装
断言
报告邮件
.....
pytest简介
1. pytest是一个非常成熟的python单元测试框架,比unittest更灵活,更容易上手
2. pytest可以和selenium,requests,appium结合实现web、接口、app自动化
3. pytest可以实现测试用例的跳过以及reruns失败用例重试
4. pytest可以和allure生成测试报告
5. pytest可以和jenkins持续集成
6. pytest有很多强大的插件,并且这些插件能够实现很多使用的操作
pytest插件:
插件名 | 作用 |
---|
pytest-html | 生成html格式的自动化测试报告 | pytest-xdist | 测试用例分布式执行,cpu分发 | pytest-ordering | 用于改变测试用例的执行顺序 | pytest-rerunfailures | 测试用例失败后重跑 | allure-pytest | 用于生成测试报告 |
pytest规则以及基础应用
1. 模块名必须以test_开头或者_test结尾
2. 测试类必须以Test开头,并且不能init方法
3. 测试方法必须以test开头
pytest测试用例的运行方式
pytest 参数 | 详解 |
---|
-s | 表示输出调试信息,包括print打印的信息 | -v | 显示更详细的信息 | -n | 指定分布式运行测试用例(指定线程数即可) | - -reruns | 失败用例重跑(指定重跑数量) | -x | 只要有一个测试用例报错就停止 | - -maxfail=2 | 出现两个测试用例失败就停止 | -k | 根据测试用例部分字符串指定测试用例 |
1. 主函数模式
(1)运行所有:pytest.main()
(2)指定模块:pytest.main(['-vs','test_login.py'])
(3)指定目录:pytest.main(['-vs','./interface_testcase'])
(4)通过nodeid指定用例运行:nodeid由模块名、分隔符、类名、方法名、函数名组成。
pytest.main('-vs','./interface_testcase/test_interface.py::test_04_func')
pytest.main('-vs','./interface_testcase/test_interface.py::TestInterface::test_03_test')
**2. 命令行模式**
(1)运行所有: pytest
(2)指定模块:pytest -vs test_login.py
(3)指定目录:pytest -vs ./interface_testcase
(4)指定函数:pytest -vs ./interface_testcase/test_interface.py::test_04_func
(5)执行方法:pytest -vs ./interface_testcase/test_interface.py::TestInterface::test_03_test
**3. 通过读取pytest.ini配置文件运行**
(1)pytest.ini 文件时pytest单元测试框架的核心配置文件。
(2)位置:一般存放与项目的根目录
(3)编码:必须是ANSI,可以使用notpad++修改编码格式
(4)作用:改变pytest默认的行为规则
(5)运行规则:不管是主函数的模式运行或者命令行的模式运行,都回去读取这个文件
[pytest]
addopts = -vs # 命令行的参数用空格分隔
testpaths = ./testcase #测试用例的路径
python_file = test_*.py #模块名的规则
python_classes = Test* #类名的规则
python_functions = test #方法名的规则
pytest测试用例运行顺序 pytest测试运力从上至下以此执行,可用通过@pytest.mark.run(order=3) 装饰器设置测试用例执行的顺序,该装饰器依赖于pytest-ordering插件 使用时需提前安装
测试用例分组执行(冒烟,分模块执行,分接口和web执行) somke:冒烟用例,分布在各个模块里面
|