pytest框架
pytest不能实现web/app/接口任意一种自动化测试,它是用来管理用例,执行用例,获得一份执行结果的工具
-
模块:pytest
pip install pytest
-
基本使用方法
- 说明:
- 函数名需要以test开头
- 类名需要以Test开头,类中的方法需要以test开头,
- 类中不能有构造方法
- 使用assert进行断言
- 脚本名需要以test开头
- 说明:
-
作用于函数
import pytest
def test_1():
print("44444")
assert 1==1
def qtest_1(): #函数名不是以test开头,故不能被pytest加载
print('不能被执行')
if __name__ == '__main__':
#pytest.mian(['-s',__file__]) #-s, 将print语句的结果输出
#pytest.mian(['-v', __file__]) # -v, 以详细信息显示每条用例执行结果
pytest.mian(['-q', __file__]) # -q, 以极简形式显示测试结果
- 作用类
import pytest
class Test_add():#测试类名必须以Test开头!!!
# def __init__(self):#测试类中不能用构造方法!!!
# pass
def test_1(self):
assert 1+1==2
# def qtest_1(): #函数名不是以test开头,故不能被pytest加载
# print('不能被执行')
if __name__ == '__main__':
pytest.mian(['-v', __file__]) # -v, 以详细信息显示每条用例执行结果
- 用例执行
-
方式
- 脚本:
pytest.main([参数1,参数2,......]) - 命令行:用命令行执行,如果有配置文件,会默认走配置文件
pytest 参数 脚本py.pytest 参数 脚本python -m pytest 参数 脚本

- 脚本:
-
参数
- -s, 将print语句的结果输出
- -v, 以详细信息显示每条用例执行结果
- -q, 以极简形式显示测试结果
- -k, 通过关键字匹配脚本,函数名,类名,方法名

- -x, 如果测试执行过程中有fail的用例,则测试立即停止

- –maxfail=n,当失败的用例达到执行的数量n时,停止测试

- -m, 对用例进行标记,执行指定的用例
-
1、在项目根目录下新建文件pytest.ini
-
2、在pytest.ini文件中添加标记
[pytest] markers=a b c smoke_case -
3、使用装饰器标记测试用例
@pytest.mark.a

-
4、执行测试时,使用
-m 标记即可执行指定的用例

-
- 跳过用例
@pytest.mark.skip(reason=xxxxx),无条件跳过指定用例@pytest.mark.skipif(条件,reason=xxxxx),有条件跳过指定用例

-
参数化
-
@pytest.mark.parametrize('参数1,参数2',值)- 参数,与被装饰的函数行参相同
- 值,传递给参数的数据,通常为一个列表,如果需要给多个参数传数据可以将这些数据封包到元组或列表中
-
例1:1个参数
import pytest @pytest.mark.parametrize('a',[1,2,3,4,5]) def test(a): print(a) -
例2:多个参数
import pytest @pytest.mark.parametrize('a,b,c',[(1,2,3),(2,3,4),(4,5,6)]) def test(a,b,c): assert a+b ==c
-
-
前置后置
- setup和teardown主要分为:模块级,类级,功能级,函数级。
- 函数级别setup()/teardown()
运行于测试方法的始末,即:运行一次测试函数会运行一次setup和teardown - 类级别setup_class()/ teardown_class()
运行于测试类的始末,即:在一个测试内只运行一次setup_class和teardown_class,不关心测试类内有多少个测试函数。
-
fixture修饰器
- 创建:@pytest.fixture([name,scope,params,autouse])
- name ,指定fixture名称,如果不指定则默认为被装饰的函数名
- scope , 指定fixture作用范围,module、class、function(默认)、session、package
- params , 参数
- autouse, 设置为True,设置为True自动运行
- params, (list类型)提供参数数据,供调用标记方法的函数使用
- yield , yield在fixture中起到了唤起teardown的作用,在返回结束后,后续的代码仍可执行

- 全局fixture
- 1、在项目下创建conftest.py文件,在改文件中实现fixture

- 2、调用

-
本文详细介绍了pytest自动化测试框架的使用,包括基本用法、参数化测试、前置后置操作以及如何通过标记选择性执行测试用例。通过实例展示了如何定义和运行测试函数、类,以及使用skip和skipif跳过特定测试。还提到了pytest.ini配置文件和fixture功能,用于全局管理和定制测试行为。此外,文章涵盖了pytest命令行参数,如-s、-v、-q等,帮助读者更好地理解和控制测试输出。
2万+

被折叠的 条评论
为什么被折叠?



