首页 > 其他分享 >5.Pytest自动化测试框架(2)

5.Pytest自动化测试框架(2)

时间:2024-04-09 19:33:23浏览次数:27  
标签:__ 框架 self pytest assert Pytest 自动化 test def

[email protected]装饰器及执行级别

作用:相当于Jemeter中的set up和tear down函数
set up:在所有方法之前执行
tear down:在所有方法之后执行

import pytest
# 装饰器,声明下面的函数是setup函数,即会在所有方法之前执行
#scope参数:可省略,缺省值默认是function级别
#function:每个函数或方法之前执行一次
#class:每个类之前执行一次
# module:每个模块之前执行一次,一个模块包含多个类(一个模块就是当前文件)
# session:(优先级最高)fixture的内容写到conftest.py里,相同目录里的所有文件共用这个配置
#autouse=True:自动调用,不需要作为参数传到test方法里
@pytest.fixture(scope='module')
def fun1():
    print('===测试开始')
    yield  # yield关键字之后的语句是teardown用法
    print('测试结束===')


class Test1:
    def test_some1(self, fun1):
        assert 1 == 2

    def test_some2(self, fun1):
        assert 1 == 1

class Test2:
    def test_some1(self, fun1):
        assert 1 == 2

    def test_some2(self, fun1):
        assert 1 == 1
class Test3:
    def test_some1(self, fun1):
        assert 1 == 2

    def test_some2(self, fun1):
        assert 1 == 1
        
if __name__ == '__main__':
    # -s:允许执行print()语句,-v:详细的测试信息
    pytest.main([__file__, '-sv'])

test_pytest2.py模块中有3个类,但只执行一次装饰器里的语句
在这里插入图片描述

session级别举例:

在这里插入图片描述
conftest.py文件

import pytest
#autouse=True--自动使用
# 其他模块里的测试方法不用专门写(def test_c01(self,func100):)进行调用了
#可以直接这样写:def test_c01(self):
@pytest.fixture(scope='session',autouse=True)
def func100():
    print('====测试开始======')
    yield
    print('====测试结束=====')
if __name__ == '__main__':
    pytest.main([__file__,'-sv'])

test_pytest.py文件

import pytest

class Test:
    def test_c01(self):
        assert 1 == 1

    def test_c02(self):
        assert 1 == 2


if __name__ == '__main__':
    # __file__当前文件名,-v:报错详细,展示是哪个类的哪个方法报错
    pytest.main([__file__, '-sv'])

执行test_pytest.py文件,会自动执行conftest.py里的内容
在这里插入图片描述

[email protected]装饰器

使用场景:如果一个模块中需要测试多个用例,每次都新加test_方法和断言会很冗余
装饰器作用:让测试数据参数化,实现数据驱动,方便代码和测试数据分离


import pytest
# 如果一个模块中有多个测试用例
# 以前的写法:代码冗余,效率不高
# class Test:
#     def test_c01(self):
#         assert 1==2
#     def test_c02(self):
#         assert  2==3
#     def test_c03(self):
#         assert 3==5

# 使用装饰器,只需要设置列表的值即可
class Test1:
    list=[[1,2],[2,3],[3,5],[6,6]]
    @pytest.mark.parametrize('expected_result,actual_result',list)
    def test_c100(self,expected_result,actual_result):
        assert expected_result==actual_result
if __name__ == '__main__':
    pytest.main([__file__,'-sv'])

标签:__,框架,self,pytest,assert,Pytest,自动化,test,def
From: https://blog.csdn.net/Ambition_ZM/article/details/137563679

相关文章

  • UI自动化之设计模式--关键字驱动设计
    UI自动化测试框架:1.关键字驱动设计2.Excel数据驱动设计3.框架实现UI测试框架之设计模式:(一)设计模式介绍1.目前主流的测试框架的设计模式:*1.1关键字驱动:最核心,最传统的设计模式。基于关键字的形态来实现对业务的自动化执行。通过操作行为的封装或者是通过业务流程的封装......
  • 跨框架探索:React Redux 和 Vuex 对比分析快速掌握React Redux
    ReactRedux和Vuex都是前端状态管理库,分别用于React和Vue.js框架。它们都提供了一套规范的状态管理机制,帮助开发者更好地组织和管理应用状态。下面是它们的一些异同点:相同点:中心化状态管理:两者都提供了一个全局的存储中心,使得组件间状态共享变得简单。响应式:状......
  • 自动化测试工具playwright
    Playwright是由微软在2020年初开源的新一代自动化测试工具,其功能和Selenium、Pyppeteer等类似,都能驱动浏览器进行各种自动化操作。它不仅功能强大,而且对市面上的主流浏览器都提供了支持,其API功能简洁又强大。此外,Playwright是一个可以支持网页页面渲染的工具,加上其强大又简洁的......
  • 如何定义快速开发平台框架?有何突出优势?
    作为提质增效的利器软件,快速开发平台框架如何能在众多同行中取胜?又是凭借什么优势特点在激烈的市场竞争中获得众多客户的青睐与信任?不管是从企业角度、服务商角度,还是使用者的角度来说,做好流程化进程,打破信息孤岛都需要借助专业的快速开发平台框架的力量,使其进入高效的数字化发展......
  • Mockito测试框架结合mybatisplus项目中第一次体验
    因为要补充单测,一般的springbootTest不是真正意义上的单测。我们需要mock数据库的连接,而不是真正的调用。所以我觉得mockito测试框架就挺好的pom引入如下代码,这里用inline是因为我要用到静态方法的调用。<dependency><groupId>org.mockito</groupId>......
  • 实用指南:使用Pytest Allure测试框架添加用例失败截图
    前言在我们进行软件测试的过程中,我们提交的测试报告缺少一些详细的附件,尤其是用例失败时候的截图,更方便我们去查看具体的情况,我们在进行测试时会使用allure+pytest来生成测试报告,本文我们就来介绍一下在allure测试报告中添加用例失败截图。钩子函数准备我们可以使用pytest_run......
  • AI进行元素识别和文字识别实现UI自动化测试
    【背景】一般移动端APP会有页面元素属性,比如:ID,ClassName,Text等,可以方便定位需要操控的元素控件。而这类的UI控件识别框架的结果输出往往依赖于开发同学在代码中对控件元素进行合理有效的命名,且一旦这些控件元素被混淆后就很难进行有效的元素定位。为了降低每个版本UI元素的层级等......
  • mybatis框架log4j日志配置详解及jar包下载
    mybatis框架配置日志步骤1.引入日志的jar包logback-classic-1.2.3.jar,logback-core-1.2.3.jar,slf4j-api-1.7.26.jar链接:百度网盘请输入提取码提取码:4ufh下载后在工程中新建一个lib文件夹如图所示:将下载好的jar包复制到lib文件夹中,并添加到库引用(不要漏掉!)如图所......
  • Mapster 高性能对象映射框架
    Mapster简介Mapster是一个使用简单,功能强大,性能极佳的对象映射框架为什么选择Mapster?性能&内存占用与AutoMapper相比,Mapster在速度和内存占用方面表现更加优秀,可以在只使用1/3内存的情况下获得4倍的性能提升。并且通过使用以下组件可以获得更高的性能:MethodMea......
  • ludic 基于纯python 开发动态html 页面的框架
    ludic使用了htmx进行页面的处理,同时基于starlette提供asgiweb能力包含的特性基于python的无缝的htmx集成快速开发web基于python类型系统的类型组件基于starlette的异步搞性能web处理基于pythonf-strings的html构建基于主题的组件css样式添加说明目前ludic......