您现在的位置是:首页 >学无止境 >Pytest自动化测试框架详解+mark标记+fixture夹具网站首页学无止境

Pytest自动化测试框架详解+mark标记+fixture夹具

软件测试老莫 2024-07-04 11:18:03
简介Pytest自动化测试框架详解+mark标记+fixture夹具

目录

1,pytest介绍

2,pytest特点

3,框架的核心作用:

4,pytest详解和常用的插件安装

5,pytest默认的测试用例的规则

6,pytest执行2种方式

7,pytest里面配置文件:ini

8,pytest常用功能标记的使用

9,pytest前后固件(夹具)


Pytest框架详解+mark标记+fixture夹具

1,pytest介绍

pytest是python的一种单元测试的框架,同自带unittest测试框架比较类型,相比于unittest框架使用起来更加简洁,效率更高,功能更加强大。

pytest:pytest自动化测试框架详解+mark标记+fixture夹具_哔哩哔哩_bilibiliicon-default.png?t=N4P3https://www.bilibili.com/video/BV17j411w7Sr/?spm_id_from=333.999.0.0                     

 

2,pytest特点

容易上手,入门比较简单,文档比较丰富,有很多实例可以进行参考支持参数化

执行测试用例过程中可以将某些测试用例进行跳过,或者直接标记预期失败支持重复的执行失败用例

便捷管理用例,方便和持续集成工具集成,便于生成测试报告具有很多的第三方插件,并且可以自定义的扩展功能

3,框架的核心作用:

找到测试用例执行测试用例断言测试结果生成测试报告

所有步骤和流程都是自动化的过程,需要自己搭建测试的框架。

4,pytest详解和常用的插件安装

pytest有很多的强大的插件:

生成测试报告:pytest-html多线程运行:pytest-xdist

控制用例的执行顺序:pytest-ordering失败用例重跑:pytest-rerunfailures

生成企业级专业版的测试报告:allure-pytest测试框架本身:pytest

管理基础路径:pytest-base-url

。。。

如何安装插件:

在项目当中取新建一个requirements.txtt文件(房子要装修)

需要把第三方插件安装上:

安装命令: pip install -r requirements.txt

5,pytest默认的测试用例的规则

新建一个用例管理包:testcases,里面创建测试用例文件

1,所有的文件名(模块名)都要test开头或者以test结尾

2,测试类必须以Test开头,并且类里面不能有init魔法方法

3,测试用例必须要以test开头

测试用例脚本一般会定义成:类里面的实例方法,函数。

6,pytest执行2种方式

1,通过命令执行:pytest -s 2,主函数执行:新建一个run.py文件

import pytest

if   name	 == ' main ': pytest.main()

7,pytest里面配置文件:ini

[pytest]
# 命令行参数,多个参数之间可以使用空格分开
# 详细输出信息和调试信息
addopts = -vs

# 指定测试用例的文件夹
testpaths = ./testcases

# 修改默认文件(模块)的规则
python_files = test_*.py demo_*.py

# 修改默认规则类
python_classes = Test* Dome*

# 修改默认的用例的规则
python_functions = test_* demo_*

注意:如果配置文件ini当中,使用了中文注释信息,如果运行不成功:需要修改编码格式

pytest:

pytest自动化测试框架详解+mark标记+fixture夹具_哔哩哔哩_bilibiliicon-default.png?t=N4P3https://www.bilibili.com/video/BV17j411w7Sr/?spm_id_from=333.999.0.0                             

 

8,pytest常用功能标记的使用

  1. 标记跳过 无条件跳过:
class DomeLogin:
@pytest.mark.skip(reason="当前版本不测试直接跳过") def demo_login_shop(self):
print("登录商城的用例开始执行")
  1. 有条件跳过
class TestLogin:
# 条件成立时跳过该用例。不成立则执行用例 @pytest.mark.skipif(2 > 10, reason="条件成立跳过") def test_login_shop(self):
print("登录商城的用例开始执行")
  1. 标记执行顺序 默认情况下:按照文件名去识别执行,从上往下,如果需要调整执行顺序:使用ordering插件进行调控
import pytest



def test_f():
print("这是第1条用例")


def test_f2():
print("这是第2条用例")


@pytest.mark.run(order=1) def test_f3():
print("这是第3条用例")


def test_f4():
print("这是第4条用例")


@pytest.mark.run(order=2) def test_f5():
print("这是第5条用例")
  1. 标记失败的用例 标记预期会出现异常的测试用例,只有出现异常才对(XFAIL),不出现异常反而不对(XPASS )
test.mark.xfail(reason="失败原因") def test_f2():
# print(a)
print("这是第2条用例")
  1. 标记参数化

对于类似过程,但是数据不一样的时候,可以使用参数化

ytest.mark.parametrize(["a", "b"], [(1, 2), (3, 4), (5, 6), (666, 888)]) def test_register(self, a, b):
print("现在开始执行注册用例...")
print(f"参数相加的结果:{a + b}")

数据驱动测试:从:excel,csv,yaml,text,等等文件中读取数据,进行参数化使用

9,pytest前后固件(夹具)

作用:在用例执行之前和用例执行之后需要固定的测试环境。夹具:pytest自带三种类型,以及自定义类型

模块夹具,类夹具,方法夹具(函数夹具)

# 方法夹具
def setup_methood(self):
print("方法用例执行之前,需要的操作:热身")

def teardown_methood(self):
print("方法用例执行之前,需要的操作:拉伸")

# 类夹具:
def setup_class(self)
pass
def teardown_class(self): pass

# 函数夹具:
def teardown_function(): print("函数执行之前:拉伸")


def setup_function(): print("函数执行之前:热身")

# 模块夹具:
def teardown_module():
print("模块执行之前:拉伸")


def setup_module():
print("模块执行之前:热身")

fixture自定义夹具

pytest:

pytest自动化测试框架详解+mark标记+fixture夹具_哔哩哔哩_bilibiliicon-default.png?t=N4P3https://www.bilibili.com/video/BV17j411w7Sr/?spm_id_from=333.999.0.0

 

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。