您的位置:首页 > 娱乐 > 八卦 > python自动化笔记:pytest框架

python自动化笔记:pytest框架

2024/12/22 22:06:02 来源:https://blog.csdn.net/zhoukeguai/article/details/140683783  浏览:    关键词:python自动化笔记:pytest框架

目录

  • 一、pytest介绍
  • 二、测试用例命名规则
    • 2.1、pytest命名规则
    • 2.2、python命名规范
  • 三、pytest运行方式
    • 3.1、主函数方式
    • 3.2、命令行方式
    • 3.3、通过pytest.ini的配置文件运行(常用)
  • 四、跳过测试用例
    • 4.1 无条件跳过
    • 4.2 有条件跳过
  • 五、用例的前后置,固件,夹具,钩子函数

一、pytest介绍

二、测试用例命名规则

2.1、pytest命名规则

1、模块名必须以test_开头或者_test结尾。
2、测试类必须以Test开头,并且不能带有init方法。
3、测试用例必须以test_开头。

2.2、python命名规范

1、模块名:一般全小写:多个英文之间用_隔开。
2、类名:类名一般是首字母大写
3、方法名:一般全小写:多个英文之间用_隔开。

三、pytest运行方式

3.1、主函数方式

import pytestclass TestApi:def test_sheshou():print("鲁班")def test_fashi():print("安琪拉")if _name_ == '_main_':pytest.main()

常见参数

参数描述案例
-v输出更加详细的信息,比如文件和用例名称等pytest.main([‘-v’])
-s输出调试信息。打印信息等pytest.main([‘-s’])
–reruns N失败重跑N次(N是数字)
–x只要有一个用例执行失败,就停止执行测试
–maxfail=N出现N个失败就终止测试(N是数字)
–html=report.html生成html的测试报告
-n多线程
-k运行测试用例名称中包含指定字符串的用例 ,可以使用and或orpytest.main([‘-vs’,‘-k’,'one or two’])

指定模块运行

if _name_ == '_main_':pytest.main(['-vs','testcases/test_api2.py'])

指定整个文件夹运行

if _name_ == '_main_':pytest.main(['-vs','testcases/'])

通过node id的方式运行测试用例。

if _name_ == '_main_':pytest.main(['-vs','testcases/test_api.py::TestApi::test_sheshou'])

3.2、命令行方式

3.3、通过pytest.ini的配置文件运行(常用)

注:不管是命令行还是主函数都会读取这个配置文件

pytest.ini:全局配置文件,通常放在项目的根目录下,用于改变pytest的运行方式和设置配置信息

[pytest]
addopts = -vs -n 2 
testpaths =./test_case 
python_files = test_*.py  
python_classes = Test* 
python_functions = test  
markers =              smoke:冒烟用例     # 中文可有可无,标记字段说明    usermanage:用户管理模块     productmanage:商品管理模块
参数描述
addopts命令行参数,多个参数之间用空格分隔
testpaths配置搜索测试用例的范围
python_files改变默认的文件搜索规则
python_classes改变默认的类搜索规则
python_function改变默认的测试用例的搜索规则
markers标记,用于指定用例执行,与装饰器@pytest.mark.标记名 配合使用,需要在addopts中使用【-m smoke】才能生效,其中smoke是标记名,可以替换

特别提示:此文件中最好不要出现中文, 如果有中文的情况下,可使用notpad++改成GBK的编码。

用例里面加标记

class TestApi:@pytest.mark.smokedef test_sheshou():print("鲁班")@pytest.mark.productmanagedef test_fashi():print("安琪拉")

执行的时候通过-m参数指定标记

addopts = ‐vs ‐m smoke

四、跳过测试用例

4.1 无条件跳过

class TestApi:@pytest.mark.skip(reason="粒度不需要")@pytest.mark.smokedef test_sheshou():print("鲁班")

4.2 有条件跳过

class TestApi:@pytest.mark.skipif(age>2,reason="以后版本都不执行")@pytest.mark.productmanagedef test_fashi():print("安琪拉")

五、用例的前后置,固件,夹具,钩子函数

未完待续

在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com