pytest

发布时间 2023-03-28 20:25:45作者: 爱吃的豆豆子

pytest简介:

pytest是python的第三方单元测试框架,比自带的unittest更简洁和高效,同时兼容unittest框架

 

pytest测试用例编写规则:

1、测试文件以test_开头(以_test结尾也可以)

2、测试类以Test开头,并且不能带有__init__方法

3、测试函数以test_开头

4、断言必须使用assert

 

 也可以直接写测试方法

 

 

Pytest.main()  会自动把当前模块下符合要求的用例以及子模块下符合要求的用例进行执行

Pytest中的fixtrue

可以把fixture看做是资源,在你的测试用例执行之前需要去配置这些资源,执行完后需要去释放资源。类似unittest中的setupteardown功能。

举例一:

 

这是运行结果:

 

 

 举例二:

 

 

 

 

 

Pytestfixture的参数介绍:

autouse:在一个session内所有的test都会自动调用当前的fixture,默认为false

 

 

 

 

 

Name:设置fixture的名称,不设置默认为装饰函数的名称

 

 

 

Scope:作用范围

设置范围后,会根据设置的范围去触发执行。范围可选值:function:每个方法(函数)都会执行一次。(默认)class:每个类都会执行一次。类中有多个方法调用,只在第一个方法调用时执行。module:一个.py文件执行一次。一个.py文件可能包含多个类和方法。package/session:多个文件调用一次,可以跨.py文件

 

Scope = function是默认效果

 

 

 结果为:

 

 

 

 Scope = class的效果

 

 

 

 结果为:

 

Scope = module的效果

 

 

 

 结果为:

 

Params:传入参数,接收一个列表,列表中每个数据都作为用例的输入

 

 

 

 Ids的作用:测试字符串id的列表,每个测试字符串id对应于params,默认为参数值

 

 

 

 

 

conftest.py文件应用pytest中的fixturepytest用于将测试前后进行预备,清理工作的代码分离出核心测试逻辑的一种机制。但是我们更加希望的是在一个测试套件中,能够共享fixture的机制,这样一个测试套件里面的所有测试点都能够共同使用。在pytest中可以通过conftest.py来共享fixture,如果希望多个测试文件共同使用一个fixture时候,可以在该目录下创建conftest.py文件。