pytest框架详细介绍 pytest框架和selenium一样吗
很多朋友对于pytest框架详细介绍和pytest框架和selenium一样吗不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧!
Pytest测试框架知识
pytest是一个非常成熟的全功能的Python测试框架,主要有以下几个特点:
1.简单灵活,容易上手
2.支持参数化
3.能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium/appnium等自动化测试、接口自动化测试(pytest+requests)
4.pytest具有很多第三方插件,并且可以自定义扩展,比较好用的如pytest-selenium(集成selenium)、pytest-html(完美html测试报告生成)、pytest-rerunfailures(失败case重复执行)、pytest-xdist(多CPU分发)等
5.测试用例的skip和xfail处理
6.可以很好的和jenkins集成
7.report框架----allure也支持了pytest
使用命令
查看是否安装成功及安装的版本信息
pytest官方文档:
注意pytest有如下约束:
1、测试模块文件(.py文件)命名应该以 test_开头或者以_test结尾。
2、测试类命名应当以Test开头。表示一个项目或者一个模块的用例集合
3、测试用例(函数)命名,测试函数的方法命名应该以test_开头。
注意:测试类的不应该有构造函数,也就是不能有 __init__出现
案例新建一个python文件,命名为:test_example1:
执行后,可以看到,运行了test_example1文件下Test_Login测试类和Test_Login2测试类中的三个测试用例
参数详解:
-s:表示输出调试信息,包括print打印的信息
-v:显示更详细的信息
-vs:两个参数一起用
-n:支持多线程或分布式运行用例
-return NUM:失败用例重跑,num失败后重跑的次数
-x:表示只要有一个用例报错,那么测试停止
--maxfall=2:出现两个用例失败就停止
-k:根据测试用例的步伐字符串指定测试用例
如:pytest-vs./testcase-k"ao"
--html./report/report.html:会在之指定路径下生成html的报告
pytest.ini这个文件它是pytest单元测试框架的核心配置文件
1、位置:一般放在项目的跟目录下
2、编码:必须是ANSI,可以使用notpad++修改编码格式
3、作用:改变pytest默认的行为
4、运行规则:不管是主函数的模式运行,命令模式运行,都会去读取这个配置文件
unittes框架:是根据ASCII的大小来决定执行的顺序
pytest框架:默认从上到下
pytest自动化框架的5个层级架构
pytest自动化框架的5个层级架构
pytest提供了相对自由和层次丰富的setup与teardown框架结构,即测试用例的前后置处理机制。这些层次结构有助于在不同阶段进行必要的准备和清理工作。pytest的5个层级架构包括:session会话级、module模块级、class类级、function函数级、method方法级。以下是每个层级的详细解释:
session会话级
session层级是pytest中最高的层级,它表示整个测试会话的生命周期。在整个测试会话过程中,setup和teardown方法只会被执行一次。
用途:适用于需要在整个测试会话开始时进行全局资源初始化(如数据库连接、配置加载等),以及在测试会话结束时进行资源释放(如关闭数据库连接、清理临时文件等)的场景。
module模块级
module层级针对的是单个测试模块。在每个测试模块开始执行前,会执行setup_module方法;在所有测试用例执行完毕后,会执行teardown_module方法。
用途:适用于模块级别的资源初始化与清理,如模块级别的配置加载、模块级别的资源申请与释放等。
注意:这些方法不存在于类中,而是直接定义在模块级别。
class类级
class层级针对的是测试类。在每个测试类开始执行前,会执行setup_class方法;在该类的所有测试用例执行完毕后,会执行teardown_class方法。
用途:适用于类级别的资源初始化与清理,如类级别的数据库连接、类级别的资源申请与释放等。
注意:这些方法必须定义在测试类中,且在整个类中只会被执行一次。
function函数级
function层级针对的是单个测试用例函数。在每个非类函数测试用例开始前,会执行setup_function方法;在每个测试用例执行完毕后,会执行teardown_function方法。
用途:适用于函数级别的资源初始化与清理,如测试用例的输入准备、测试用例执行后的环境恢复等。
注意:这些方法适用于非类函数测试用例,即直接定义在模块中的函数。
method方法级
method层级针对的是测试类中的单个测试方法。在每个测试方法开始前,会执行setup_method方法;在每个测试方法执行完毕后,会执行teardown_method方法。
用途:适用于方法级别的资源初始化与清理,如测试方法的输入准备、测试方法执行后的环境恢复等。
注意:这些方法必须定义在测试类中,且会在每个测试方法执行前后分别被调用。此外,在pytest v7以后的版本中,如果类中同时存在setup_method/teardown_method和setup/teardown方法,只会执行setup_method/teardown_method方法。
兼容类/函数方法setup/teardown
pytest还提供了一种兼容性的setup/teardown方法,这些方法可以在类中定义,用于在每个测试用例方法前后执行。然而,需要注意的是,在pytest的新版本中(如v7及以后),如果类中同时存在setup_method/teardown_method和setup/teardown方法,只会执行前者。用途:这种方法提供了一种兼容性的写法,使得在旧版本的pytest代码中编写的测试用例能够在新版本中继续运行。然而,为了代码的清晰性和可维护性,建议在新版本的pytest中优先使用setup_method/teardown_method方法。以下是pytest 5个层级架构的简要总结:
session会话级:整个测试会话的生命周期,全局资源初始化与释放。module模块级:单个测试模块的生命周期,模块级别的资源初始化与清理。class类级:单个测试类的生命周期,类级别的资源初始化与清理。function函数级:单个非类函数测试用例的生命周期,函数级别的资源初始化与清理。method方法级:测试类中的单个测试方法的生命周期,方法级别的资源初始化与清理。通过合理利用pytest的5个层级架构,可以更加高效地编写和管理测试用例,提高测试代码的可读性和可维护性。
Python测试框架pytest入门基础
通过官方网站介绍我们可以了解到,pytest是一个非常成熟的全功能的python测试框架,主要有
以下几个特点:
1.直接使用pip命令安装
2.验证安装结果
3.在pytest测试框架中,要遵循以下约束:
pytest进行测试比较简单,我们来看一个实例:
这里我们定义了了两个测试函数,直接打印出结果,下面执行测试:
输出结果中显示执行了多少条案例、对应的测试模块、通过条数以及执行耗时。
pytest断言主要使用Python原生断言方法,主要有以下几种:
可以看到运行结果中明确指出了错误原因是"AssertionError",因为PHP不在str1中。
1.运行指定案例
2.运行当前文件夹包括子文件夹所有用例
3.运行指定文件夹(code目录下所有用例)
4.运行模块中指定用例(运行模块中test_add用例)
5.执行失败的最大次数
使用表达式"--maxfail=num"来实现(注意:表达式中间不能存在空格),表示用例失败总数等于num时停止运行。
6.错误信息在一行展示
在实际项目中如果有很多用例执行失败,查看报错信息将会很麻烦。使用"--tb=line"命令,可以很好解决这个问题。
本地写一个查询用户信息的接口,通过pytest来调用,并进行接口断言。
关于pytest框架详细介绍和pytest框架和selenium一样吗的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。