pytest框架学习(一)

第一章

pytest介绍:
pytest是一个成熟的全功能python测试工具,可以做到开箱即用,自动发现测试用例。统一使用assert,简化断言语句,丰富的插件架构,超过800多个外部插件具有灵活的扩展性和方便的参数化方法。
命名规则&执行顺序:
1)模块:test_*.py或者 *_test.py
2)函数:test_*
3)类:Test_*,测试类不能有__init__函数
4)断言:assert,支持所有python的布尔表达式。
用例执行顺序:
1)在包含用例的项目路径下(root-dir)执行:pytest -v
2)目录和py文件:按照ASCII码排序方式,进行文件递归顺序收集和运行
3)py文件中:按照代码从上到下
4)验证执行顺序:pytest --collect-only
在这里插入图片描述
在这里插入图片描述
pytest中编写 python代码时 当多行语句为一个语句时,可以使用 \ 符合进行连接。
自定义异常的写法

assert   actual == 1, \
	f"实际结果值:{actual}"与预期结果只{1}不相等"

pytest中用例异常处理
在这里插入图片描述
获取测试用例模块、名称、函数名称等信息

import inspect   # 从实时 Python 对象中获取有用的信息
import  pytest
# python-inspect   捕获详细异常信息
def test_inspect_info():
    # 期望为 模块名::用例名::错误信息
	 expected = 'test_06_get_error::test_inspect_info::division by zero'
	 with pytest.raises(Exception) as exc_info:
	 	    c = 2 / 0
	 # 获取错误文本:exc_info.value.args[0]
	 # 如获取错误类型:exc_info.type
	 error_info =  exc_info.value.args[0]  # 获取用例具体错误信息
	 module_name  =  inspect.getmodulename(__file__)     # 获取用例所在模块  
	 method_name  =  inspect.stack[0][3]   # [0][3]  获取用例名字
	 actual = f"{module_name}::{method_name}::{error_info}"
	 assert actual == expected	 
	 
# Pytest 内置功能捕获异常信息
def test_get_raises(request):
	 # 期望为 模块名::用例名::错误信息
	 expected = 'test_06_get_error::test_inspect_info::division by zero'
	 with pytest.raises(Exception) as exc_info:
	 	    c = 2 / 0
	 error_info =  exc_info.value.args[0]  # 获取用例具体错误信息
	 module_name  =  request.module.__name__.split('.')[-1]    # 获取用例所在模块  
	 method_name  =  request.function.__name__   #  获取用例名字
	 actual = f"{module_name}::{method_name}::{error_info}"
	 assert actual == expected
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值