Python —— pytest框架

2023-09-22 14:10:21

1、认识pytest框架

1、搭建自动化框架的思路与流程

1、搭建自动化测试框架的思路和流程,任意测试手段流程都是一致的:手工测试、自动化测试、工具测试

  1. 手工测试:熟悉业务 —— 写用例 —— 执行用例并记录结果 —— 生成测试报告
  2. 自动化测试:熟悉业务 —— 写自动化用例(来自于手工测试用例,格式转化为代码) —— 代码表达用例 —— 代码收集测试用例 —— 执行测试用例 —— 代码生成测试报告

2、测试框架(是一种技术栈):是一个现成的框架,区别于自动化测试框架(需要借助测试框架+基于项目实现搭建的针对项目的框架),介绍一下使用最多的2个框架:

  1. unittest:内置库,不需要安装,不能自动发现测试用例,手动收集用例
  2. pytest:第三方库,需要安装导入使用:智能自动收集所有用例,使用更广泛

                - 安装: pip install pytest

                - 导包:import  pytest

        3. unittest和pytest都是单元测试框架,都可以用来编写测试用例,运行用例,生成报告,实现测试前置和后置等

2、pytest语法

1、编写用例的2种规则(为了确保可以自动识别测试用例)

1、 使用函数格式编写时,函数名字以test_开头才会被识别为pytest测试用例的方法,不然就是普通的函数

2、 测试类的形式 编写测试用例,类名Test开头类里面方法 test_开头,才会被识别为pytest测试用例的方法

注意:当pytest识别出这个是测试用例后,这个函数前方会有一个小绿三角,如下图所示:

如果没有小三角,可以这样做:File - setting - Tools - Python Integrated Tools - testing配置pytest

2、运行pytest用例

1、运行单个模块用例,右键运行,点击三角符号运行

2、完整项目框架里每个模块单独调用一个py文件管理,需要收集所有模块的用例,一起执行可以在项目的跟目录下创建一个main.py,会运行这个项目底下所有的用例,其原理是:不同模块,不同目录,主要符合命名规则的都会拿过来执行(范围:rootdir)

3、执行自动化测试用例
1、使用 pytest.main()执行所以用例

在项目最外层创建main.py文件,文件内容如下,它会自动在这个文件所在目录收集符合命名规则的文件,符合规则如下:

  1. 文件名字,以 test_开头、_test开头
  2. 用例名字:测试用例名字以 test开头,或者类以 Test开头 +test_开头的方法函数名字

注意:pytest用例执行搜索名字时,跟项目文件夹的名字无关

'''
main.py
'''

import pytest
pytest.main()  # 收集所有符合pytest语法命名的测试用例

2、执行部分用例的方式

  1. 修改文件和用例方法的名称
  2. 指定目录和文件执行,加参数控制,例如:pytest.main([r"testcase\test_01_demo.py"])表示仅执行test_01_demo.py文件
  3. 加标签【类比手工测试用例的优先级: P1 P2 P3 P4 (important critical major)  high  medium low】, 加参数过滤用例
       - 用例定义的加一个标签,pytest自带: 用装饰器形式:@pytest.mark.p2
       - 执行的时候 加参数 -m 标签,如下举例:
class Testdemo:
    @pytest.mark.p1    # 添加标记
    def test_case02(self):
        assert 1 == 10

    @pytest.mark.p2    # 添加标记
        assert 10 > gen_ran()

    def test_case04(self):
        assert 20 < gen_ran()

扩展

1、用例执行顺序是什么?
        - 文件: 名字排序,ASCII顺序,0-9a-zA-Z
        - 文件内部: 代码从上到下顺序执行
如果调整用例执行的顺序 按照规则调整即可。

2、

2、

更多推荐

如何从主机环境演变到云原生开发模式?

时代在发展,我们的知识,开发工具,以及相应的环境也随之进步,我们总是会趋向于向好的一面发展,期望我们自身能够更加优秀,更加高效,以及能够给周围的人带来更多的价值那么在我们平日开发过程中,你们的开发模式,以及开发环境是如何演变的呢?如下是我近一两年经历的变化,希望能给你们带来一些思考和收获混沌之初还是主机环境起初在接触g

Redis淘汰策略-架构案例2020(三十六)

上篇案例回顾:解释器,管道过滤,隐式调用优缺点?解释器则是独立的语法规则,可以通过解释器来解析,可扩展性很高,灵活性强。管道过滤则是侧重于数据的输入和输出,上一个模块的数据输出是下一个模块的输入,连接件事管道,过滤则是构件。隐式调用则强调触发和异步,多个构件会注册到一个模块里,当模块改变的时候,构件都会接收到消息从而跟

以酒为媒、以酒载道,五粮液携手首届“金熊猫奖”,讲好中国白酒故事

执笔|尼奥编辑|萧萧这是一次光影艺术与白酒酿造的和美之约,也是中国文化与世界多元文明的交融时刻,在影视与美酒的碰撞瞬间,共同擘画“美美与共,天下大同”的文明图景。9月19-20日,以“多彩文明·荣耀光影”为主题的首届“金熊猫奖”评选活动在成都举行。五粮液作为首届“金熊猫奖”全球战略合作伙伴亮相,深度融入金熊猫之夜、金熊

【C++】vector中的常见函数和使用

前言感觉vector在目前阶段很常用,就总结记录一些vector的用法方便自己忘记的时候查找因为是自用,所以我直接放代码了,只说明如何使用,以及一些小的注意点,对于函数具体实现过程,在这篇文章中,不做过多说明当然,我也给出了一些使用例子,供大家参考本文参考:C++vector操作代码#include<iostream>

报错处理:Error: Redis server is running but Redis CLI cannot connect

嗨,读者朋友们!今天我来跟大家分享一个我在运维过程中遇到的一个关于Linux上运行Redis服务时的报错及解决方法。报错信息如下:Error:RedisserverisrunningbutRedisCLIcannotconnect这个报错信息表明Redis服务器已经运行,但Redis命令行界面(CLI)无法连接。针对这

Python itertools教程(python中的迭代器与组合迭代器)

当谈到在Python中优雅地处理迭代任务时,itertools库是一个不可或缺的工具。这个强大的库提供了一系列用于创建、操作和合并迭代器的函数,能够让你的代码更加紧凑、高效,并且更易于阅读和维护。无论是解决排列组合问题、处理无限序列,还是简化循环结构,itertools都能够成为你的得力助手。Pythonitertoo

为什么建议项目经理尽快考CSPM?告诉你答案

2021年10月,中共中央、国务院发布的《国家标准化发展纲要》明确提出构建多层次从业人员培养培训体系,开展专业人才培养培训和国家质量基础设施综合教育。建立健全人才的职业能力评价和激励机制。由中国标准化协会(CAS)组织开展的项目管理专业人员能力评价等级证书(CSPM)应运而生。关于为什么要提前报考CSPM项目管理专业人

【Web3】DAO相关的基础知识

这里写目录标题DAO的基础概念为什么需要DAO?DAO的种类DAO的运作方式知名DAO的介绍BanklessDAOSeeDAODAO的生态全景图分类治理框架DAO的工具DAO众筹平台介绍-JuiceBoxDAO投票治理介绍-SnapshotDAO贡献&激励-POAPDAO信息管理-NotionDAO与传统组织的比较DA

css知识学习系列(4)-每天10个知识点

目录1.**CSS中的“box-sizing”属性与“border”属性有什么关系?**2.**在CSS中,如何使用“calc()”函数进行计算?有什么使用技巧?**3.**在CSS中,如何使用“@import”引入外部样式表?有哪些注意事项?**4.**Flexbox和Grid布局在实践中哪个更常用?为什么?**5.

redis 持久化机制

1.前言本文将先说明持久化、主存复制(及读写分离)、哨兵、以及集群几种技术分别解决了Redis高可用的什么问题;然后详细介绍Redis的持久化技术,主要是RDB和AOF两种持久化方案;在介绍RDB和AOF方案时,不仅介绍其作用及操作方法,同时介绍持久化实现的一些原理细节及需要注意的问题。最后,介绍在实际使用中,持久化方

蓝牙核心规范(V5.4)11.1-LE Audio 笔记之诞生的前世今生

专栏汇总网址:蓝牙篇之蓝牙核心规范学习笔记(V5.4)汇总_蓝牙核心规范中文版_心跳包的博客-CSDN博客爬虫网站无德,任何非CSDN看到的这篇文章都是盗版网站,你也看不全。认准原始网址。!!!1.LEAudio应用的场景这里面有四个场景是LEAudio最初需要应用的场景。比如助听器行业,这里可以讨论下它的拓扑结构、功

热文推荐