pytest入门基础

本文介绍了pytest,一个基于Python的自动化测试框架,可用于功能测试和接口自动化测试。重点讲解了fixture装饰器的使用,包括如何实现测试用例的前后置操作。还详细阐述了pytest的命名规范,如测试文件、类和函数的命名方式。此外,文章还讨论了pytest的前后置作用域,如session、module、class和function,并解释了它们的执行顺序。最后,介绍了pytest的常规使用,如pytest.main()的运用及运行参数设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

pytest

基础简介

1、Pytest是一个基于python语言的第三方自动化测试框架,除了功能性测试外,还可以基于python+requests做接口自动化测试

2、pytest通过fixture装饰器实现测试用例的前后置操作

# 前后置函数示例:
@pytest.fixture(scope="moudle")
def check_env():
	print("前置操作")
	a = 333
	yield a
	print ("后置操作")

上面示例中,@pytest.fixture装饰器用于声明函数是一个fixture,当测试函数前包含fixture装饰的函数名时,pytest就会进行相应的搜索,找到对应的函数。在测试函数执行前会先执行相应的前置操作。同时前置函数中可以有返回值,返回值可以用yield返回,也可用return返回,参考下面示例。

# 测试函数示例:
@pytest.mark.userfixtures("check_env")
class TestCheck(object):
	@allure.feature("测试用例示范")
	@allure.feature("测试用例1")
	@allure.severity("严重程度normal")
	@allure.mark.tp_casecode("测试用例ID")
	@allure.testcase("测试用例名称")
	@allure.mark.bvt
	def test_check1(self, check_env):
		"""
		具体的用例可以复制在这展示:
		前置条件
		......
		操作步骤
		1 ......
		2 .......
		期望结果
		1 ......
		2 ......
		"""
		result = check_env # 接收返回的参数,此时result值为333
		with allure.step("步骤1:。。。。。"):
			print("这是步骤1")
			assert ......
		with allure.step("步骤2:。。。。。"):
			print("这是步骤2")
			assert ......

3、 pytest编写相关命名说明

  • py文件名都需要以test_.py格式或者_test.py格式
  • 测试类class需要以Test开头,并且不能带有init方法
  • 测试函数(用例)需要以test_*开头,一个class测试类中可以包含一个或多个测试函数(用例)

4、pytest前后置相关说明
pytest的前后置作用分范围由fixture中scope参数决定,分为session、module、class、function四个级别
function 每一个函数都会被调用一次
class 每一个类调用一次
module 每一个py文件调用一次
session 多个文件调用一次
其中,优先级为:
session > module > class > function
当用例的有多个前置且包含了session、module、class、function四个基本,执行的顺序为:
前置执行顺序:session、module、class、function
后置执行顺序:function、class、module、session

常规使用

1、pytest.main()的使用:

pytest.main(["testCase/test_tpl/test_check_tpl.py::TestTPLBase::test_tpl_name"])

2、pytest运行操作
指定运行模块

pytest -s -v test_check1.py test_check2.py

指定运行函数

pytest -s -v test_check2.py::TestCheckData::test_check

指定运行类

pytest -s -v test_check2.py::TestCheckData

指定运行某个目录

pytest -s -v test/check/

排除某个目录

pytest -s -v /test/check/ --ignore=test1

排除某个目录下的某个文件

pytest -s -v /test/check/ --ignore=test1/test_check1.py

排除多个

pytest -s -v /test/check/ --ignore=test1/test_check1.py --ignore=test1/test_check2.py

3、pytest运行常用参数

--pdb       遇到失败时,转为断点调试
--trace     测试用例一开始就转为断点调试(前置还是会执行,执行完前置后,执行用例时,变为断点调试模式)
--ignore    执行时忽略排除某个用例或文件
-x          出现错误或用例失败时,自动化退出
-m          运行指定标记的用例
-s          关闭Captured stdout call输出信息(失败或成功都不显示输出结果)
-v          输出详细的信息
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值