Pytest框架入门基础知识学习

Pytest测试框架基础知识:

一、单元测试框架主要做什么:

  1. 测试发现:从多个文件里面找到测试用例。

  2. 测试执行:按照一定的顺序和规则去执行用例,并生成结果。

  3. 测试判断:通过断言判断预期结果和实际结果的差异。

  4. 测试报告:统计测试进度,耗时,通过率并生成测试报告。

二、适用pytest,默认的测试用例的规则。

  1. 模块名必须用test_开头或者用_test结尾。

  2. 测试类必须以Test开头,并且不能有init方法。

  3. 测试方法必须以test开头。

     如图所示引用test_login.py模块的TestLogin类中的test_01_func方法

三、断言:

判断是否正确 

 

若是判断错误,则说明用例执行失败

三、Pytest测试用例的运行方式

 (1)主函数模式
  1. 运行所有测试用例:   pytest.main()

  2. 运行指定模块的所有测试用例:pytest.main(['-vs','./testcase/test_login.py'])

  3. 指定指定目录的所有测试用例:  pytest.main(['-vs','./testcase'])

  4. 通过nodeid指定用例运行:nodeid由模块名,分隔符,类名,方法名,函数名组成。Pytest.main(['-vs','./testcase/test_login.py::test_01_func'])

         Pytest.main(['-vs','./testcase/test_login.py::TestLogin::test_02_func'])

(2)命令行模式:
  1. 运行所有测试用例:pytest

  2. 运行指定模块的所有测试用例:pytest -vs ./testcase/test_login.py

  3. 指定指定目录的所有测试用例:pytest -vs ./testcase

  4. 通过nodeid指定用例运行:pytest -vs ./testcase/test_login.py::test_01_func

(3)参数详解:

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

2. -v:显示更详细的信息

3. -vs:这两个参数可以一起使用

4. -n:支持多线程或者分布式运行测试用例。  如:pytest -vs test_login.py -n 2

(支持两个线程同时测试)

5. --reruns N:     

(失败用例重跑,N 为重跑的次数)

6.-x:表示只要有一个用例报错,那么测试就会停止。

7.--maxfail=2 

(出现两个用例失败就停止)

8.-k:根据测试用例的部分字符串指定测试用例   如:pytest -vs ./testcase -k ’ao’

(查找testcase目录下名字中带有ao的测试用例并执行)

9.--html ./report/report.html:生成html的测试报告。

(在report目录下生成测试报告)

(4)通过读取pytest.ini全局配置文件运行:

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

  1. 位置:一般放在项目的根目录。

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

  3. 作用:改变pytest默认的行为。

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

  5. [pytest]

  6. addopts = -vs                       #命令行的参数,用空格分隔。

  7. Testpaths = ./testcase         #测试用例的路径

  8. Python_files = test_*.py       #模块名的规则

  9. Python_classes = Test*       #类名的规则

  10. Python_functions = test      #方法名的规则

        (分模块执行参数:)

        markers=

        smoke:冒烟用例

        usermanage:用户管理模块

        productmanage:商品管理模块

     

(5)pytest的执行测试用例顺序:

1.pytest的执行用例顺序是默认按照自上到下执行,改变默认顺序可用mark标记执行

        如:@Pytest.mark.run(order=1)    代表第一个执行的用例

                

2.分组执行:(冒烟,分模块执行,分接口执行)

smoke:冒烟用例,分布在各个块里面

pytest -m "smoke"   (执行标记为冒烟的测试用例)

pytest -m "smoke or usermanage or productmanage''(执行标记为冒烟,用户管理模块和商品管理模块的测试用例)

                

(6)跳过测试用例:

1.无条件跳过

@pytest.mark.skip(reason='跳过的原因')

2.有条件跳过

@pytest.mark.skipif(age>=18,reason='成年了')

四、Pytest框架实现一些前后置(固件,夹具)的常用三种处理

(1)setup_method/teardown_method,setup_class/teardown_class

        为什么需要这些功能?

        例如:web自动化执行用例之前,请问需要打开浏览器吗?用例执行后需要关闭浏览器吗?

(2) 使用@pytest.fixture()装饰器来实现部分用例的前后置

装饰器:

@pytest.fixture(scope="",params="",autouse="",ids="",name="")

1.scope表示的是被@pytest.fixture标记的方法的作用域。function(默认),class,modulepackage/session.  

生成一个fixture标志的前后置方法,测试函数可以传入该方法进行用例前后置。

2.params:参数化(支持,列表,元祖(),字典列表[0.0.0],字典元祖(0.0.0)

3.autouse=True:所有测试用例自动使用前后置方法,默认False,

4.ids:当使用params参数化时,给每一个值设置一个变量名。意义不大。

5.name:给表示的是被@pytest.fixture标记的方法取一个别名。(当取了别名后,原来名字就不可用了)

(3)通过conftest.py和@pytest.fixture()结合使用实现全局的前置应用(比如:项目的全局登录,模块的全局处理)

1.conftest.py文件是单独存放的一个夹具配置文件,名称是不能更改。

2.用处可以在不同的py文件中使用同一个fixture函数。

3.原则上conftest.py需要和运行的用例放到统一层。并且不需要做任何的lmprt导入的操作。

(若@pytest.fixture()标记的函数未在conftest.py内,则其他模块的测试方法无法使用该fixture函数)

五、Pytest插件

Pytest有许多非常强大的插件,这些插件可以实现很多实用的操作。

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

  2. Pytest-ordering 用于改变测试用例的执行顺序。

  3. Pytest-rerunfailures 用例失败后重跑。

  4. Pytest-html 生成html格式的自动化测试报告。

  5. Allure-pytest 用于生成美观的测试报告。

安装插件可把全部放入到requirements.txt中,通过pip install -r requirements.txt安装。

六、善用AI辅助编写测试用例

最后最方便的方式就是多用AI辅助编写测试用例,再通过我们自己去检索用例是否合规。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值