首页 > 编程语言 >python 之 pytest框架

python 之 pytest框架

时间:2024-08-16 14:19:05浏览次数:9  
标签:框架 python vs pytest -- 测试用例 test interface

一、pytest 单元测试框架

1、什么是单元测试,针对软件的最小单位(函数,方法,接口)进行正确性的检查测试。

 

2、单元测试框架(按语言分)

java : junit 和testing

python : unittest 和 pytest

 

3、单元测试主要是做什么呢?

(1)、测试发现:从多个文件里面去找到测试用例

(2)、测试执行:按照一定的顺序和规则去执行。并生成结果

(3)、测试判断:通过断言判断预期结果和实际结果的差异

(4)、测试报告:测试统计进度,耗时,通过率,生成测试报告

 

二、pytest简介

1、pytest是一个非常成熟的python的单元框架,比unittest更灵活,容易上手。

2、pytest可以和selenium,requests,applum结合实现web自动化,接口自动化,app自动化

3、pytest可以实现测试用例的跳过以及reruns失败用例重试

4、pytest可以和allure生成非常美观的测试报告

5、pytest可以和Jenkins持续集成

6、pytest有很多强大的插件,并且这些插件能够实现很多的使用的操作

例如:

pytest

pytest-xdist                -- 测试用例分布式执行,多CPU分发

pytest-ordering          -- 用于改变测试用例的执行顺序

pytest-rerunfailures   -- 用例失败后重跑

pytest-html                -- 生成html格式的自动化测试报告

allure-pytest              -- 用于生成美观的测试报告

 

三、使用pytest,默认的测试用例的规则以及基础应用

1、模块名必须以test_开头或者_test结尾

2、测试类必须以Test开头,并且不能用init方法

3、测试方法必须以test开头

 

四、pytest 测试用例的运行方式

1、主函数模式

(1)运行所有:pytest.main()

(2)指定模块:pytest.main(['-vs','test_login.py'])

(3)指定目录:pytest.main(['-vs','/interface'])

(4)通过nodeid指定用例运行:nodeid由模块名,分隔符,类名,方法名,函数名组成

pytest.main(['-vs','/interface/test_login.py:test_01'])

 

2、命令行模式

(1)运行所有:pytest

(2)指定模块:pytest -vs test_login.py

(3)指定目录:pytest -vs /interface

参数详解:

-s:表示输出调试信息,包含print打印的信息

-v:显示更多的信息

-vs:上面两个参数一起用

-n:支持多线程或者分布式运行测试用例

例:pytest -vs /interface/test_login.py -n 2 (分两个线程)

--reruns num:失败用例重跑(num重跑次数)

-x:表示只要一个用例报错,测试停止

--maxfail=2 出现两个用例失败停止

-k:根据测试用例的部分字符串指定测试用例

例:pytest -vs 。/interface -k "ao"

--html ./interface/interface.html:在interface目录下生成html的测试报告

 

3、通过读取pytest.ini配置文件运行

pytest.ini文件是pytest单元测试框架的核心配置文件

(1)、位置:一般在项目的根目录

(2)、编码:必须是ANSI,可以使用notpad++修改编码格式

(3)、作用:改变pytest默认的行为

(4)、运行的规则:不管是主函数模式运行,命令行模式也能行,都会去读取这个配置文件

例:

[pytest]
addopts = -vs --html ./report.html -- 参数
testpaths = ./web -- 测试用例路径
python_files = test_*.py -- 模块名的规则
python_classes = Test* -- 类名的规则
pythonn_functions = test -- 方法名规则
markers = -- 标记用例
smoke:冒烟测试


五、pytest 用例的执行顺序是怎么样的?
unittest 以ASCLL的大小来执行
pytest默认从上到下
改变默认执行顺序,就用mark标记
例:@pytest.mark.run(order = 3)


六、如何分组执行(冒烟,分模块执行,分接口和web执行)
smoke:猫眼用力,分布在各个模块
pytest -m "smoke"                -- 就会执行带有smoke标记的模块
pytest -m "smlke or smoke ir smoke2"     -- 执行多个


七、pytest跳过测试用例
1、无条件跳过
  @pytest.mark.skip(reason = "单纯想跳过")
2、有条件跳过
@pytest.mark.skip(age>18,reason = "跳过年纪大于18的")














标签:框架,python,vs,pytest,--,测试用例,test,interface
From: https://www.cnblogs.com/baitaotao/p/18362575

相关文章

  • 【Nodejs】六、express框架
    目录一、express介绍二、express使用2.1express下载2.2express使用三、express路由3.1什么是路由3.2路由的使用3.3获取请求参数3.4获取路由参数四、express响应设置五、express中间件5.1什么是中间件5.2中间件的作用5.3中间件的类型5.4定义全......
  • python蟒蛇绘制
    turtle海龟绘图setup()设置窗体大小及位置setup()不是必须的importturtleturtle.setup(650,350,200,200)turtle.penup()turtle.fd(-250)turtle.pendown()turtle.pensize(25)turtle.pencolor("purple")turtle.seth(-40)foriinrange(4):turtle.circle(40,80)......
  • Python温度的转换
    神清气爽哈哈哈程序代码:#温度的转换TempStr=input("请输入带有符号的温度值:")ifTempStr[-1]in['F','f']:#判断字符转最后一个字符是否为F或fc=(eval(TempStr[0:-1])-32)/1.8#将摄氏度转化为华氏度print("转换后的温度是{:.2f}C".format(c))#eva......
  • 【Python SHA256 摘要算法】
    SHA256是一种广泛使用的密码散列函数,用于生成数据的唯一指纹,即散列值。它属于SHA-2家族,该家族还包括SHA-384和SHA-512算法。SHA256算法在许多领域都有应用,例如:数据完整性验证:用于验证数据在传输或存储过程中是否被篡改。例如,在下载软件时,通常会提供软件的SHA256哈......
  • 使用Python创建省份城市地图选择器
    在这篇博客中,我们将探讨如何使用Python创建一个简单而实用的省份城市地图选择器。这个项目不仅能帮助我们学习Python的基础知识,还能让我们了解如何处理JSON数据和集成网页浏览器到桌面应用程序中。C:\pythoncode\new\geographicgooglemap.py全部代码importwximportwx.......
  • 【Python-办公自动化】1秒提取PPT文本内容形成目录保存至WORD
    欢迎来到"花花ShowPython",一名热爱编程和分享知识的技术博主。在这里,我将与您一同探索Python的奥秘,分享编程技巧、项目实践和学习心得。无论您是编程新手还是资深开发者,都能在这里找到有价值的信息和灵感。自我介绍:我热衷于将复杂的技术概念以简单易懂的方式呈现给大家,......
  • 【Python-办公自动化】几分钟生成上万份合同(用此思路可以用于写作固定格式的文章)
    欢迎来到"花花ShowPython",一名热爱编程和分享知识的技术博主。在这里,我将与您一同探索Python的奥秘,分享编程技巧、项目实践和学习心得。无论您是编程新手还是资深开发者,都能在这里找到有价值的信息和灵感。自我介绍:我热衷于将复杂的技术概念以简单易懂的方式呈现给大家,......
  • SSM-国外鞋服代购平台-97782(免费领源码+开发文档)可做计算机毕业设计JAVA、PHP、爬虫、
    SSM国外鞋服代购平台摘 要随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,鞋服代购平台当然也不例外。代购平台是以实际运用为开发背景,运用软件工程原理和开发方法,采用Java技术构建的一个管理系统。整个开发过......
  • 使用magicAPI对接python 文件,上传参数获取不到回参问题
    1、在python文件中,创建post请求 @app.route('/post_endpoint',methods=['POST'])defhandle_post_request():#从请求中获取JSON数据data=request.form#打印接收到的数据(可选,用于调试)print(data)returnjsonify(data),200 这个方法,是得到form-data返回的参......
  • 基于Java中的SSM框架实现智慧医疗预约挂号管理系统项目【项目源码+论文说明】计算机毕
    基于Java中的SSM框架实现智慧医疗预约挂号管理系统演示摘要伴随着人们对医疗的关注度越来越高,对于信息化就医的发展也是当今社会发展的最为重要的问题之一。为了进一步的促进医疗事业的信息化发展工作,许多的大型的医院或者是医疗机构也在逐步的开展了信息化的就医和信息化......