Pytest学习—用例运行级别

说明

相信之前接触过的unittest的各位对setup、teardown都不会陌生,当使用了setup、teardown之后,每个用例执行之前和执行结束后都会去执行一次。这就好比是开车一样,只要我开车了,都要先对车进行启动,然后到达目的地之后对车进行熄火。这样做的好处就是在我们进行自动化测试用例执行之前进行测试准备和初始化操作,测试结束后进行清理操作,比如说一些数据库的还原、浏览器的关闭等。

说了这么多,pytest也有这种功能和语法,而且种类比unittest更加的丰富,使用起来也更加的方便快捷。
在这里插入图片描述

级别介绍

pytest的用例级别主要分为以下几类:

1、模块级:setup_module/teardown_module
2、函数级:setup_function/teardown_function
3、类级:setup_class/teardown_class
4、方法级:setup_method/teardown_method
5、类里面的级别:setup/teardown
下面通过代码来进行演示说明。
在这里插入图片描述

  1. 模块级:setup_module/teardown_module
    setup_module/teardown_module是适用于全局的,它适用于模块的始末,换句话说就是整个.py文件只运行一次,只要有一个.py文件运行,那就会执行一次setup_module和teardown_module,代码和运行结果如下:
# -*-coding:utf-8 -*-

#test_moudle.py
import pytest

def setup_module():
    print('\nsetup_moudle:整个.py模块只能执行一次')
    print('比如:所有用例开始前只打开一次浏览器')

def teardown_module():
    print('teardown_moudle:整个.py模块只执行一次')
    print('比如:所有的用例结束只最后关闭浏览器')
  
def test_one():
    print('正在运行test_one函数')
    x = 'hello'
    assert 'h' in x
 
def test_three():
    print('正在运行test_three函数')
    a = 'hello'
    b = 'hello world'
    assert a in b

if __name__ == '__main__':
    pytest.main(['-s','test_moudle.py'])

在这里插入图片描述

  1. 函数级:setup_function/teardown_function
    setup_function/teardown_function是针对于用例的,每个用例执行前、执行结束后都会执行一次setup_function、teardown_function,代码和运行结果如下:

                
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
pytest中,可以使用pytest-parallel插件来支持多线程执行用。该插件可以在mac或linux系统中运行,并通过设置--workers参数来指定线程数。然而,在Windows系统中,pytest-parallel只支持单个进程执行,即--workers参数只能设置为1。\[1\] 另外一个可选的插件是pytest-xdist,它支持多进程执行用pytest-xdist可以通过独特的测试执行模式扩展pytest,实现测试运行的并行化。它可以利用多个CPU或主机来加速测试执行,节省自动化回归测试的时间。此外,pytest-xdist还支持跨平台覆盖,可以在不同的Python解释器或不同的平台上并行运行测试。\[2\] 在使用多线程执行用时,可能会遇到fixture函数执行多次的问题。特别是当fixture函数的范围设置为session时,会导致fixture函数在每个线程中都执行,从而导致一些问题,比如token过期。为了解决这个问题,可以考虑将fixture函数的范围设置为其他级别,如function或class,以确保在测试用的session中仅执行一次。\[3\] #### 引用[.reference_title] - *1* [11、pytest多线程、多进程执行用](https://blog.csdn.net/weixin_43877527/article/details/128535493)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [接口测试多线程执行用-Pytest-xdist](https://blog.csdn.net/oqqChin12/article/details/127489055)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值