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 输出详细的信息
|