Pytest学习笔记

news2024/11/30 0:48:25

Pytest学习笔记

1、介绍

1.1、单元测试

单元测试是指在软件开发当中,针对软件的最小单位(函数,方法)进行正确性的检查测试

1.2、单元测试框架

  • 测试发现:从多个py文件里面去找到我们测试用例
  • 测试执行:按照一定的顺序和规则去执行。并生成结果
  • 测试判断:通过断言判断预期结果和实际结果的差异
  • 测试报告:统计测试进度,耗时,通过率,生成测试报告

1.3、自动化测试框架

针对一个项目开发的一个代码框架,这个框架封装了很多的基础模块,报告模块等等

1.4、Pytest

pytest可以和selenium,requests,appium结合实现web自动化,接口自动化,app自动化

pytest可以实现测试用例的跳过以及reruns失败用例重试

pytest可以和allure生成非常美观的测试报告

pytest可以和Jenkins持续集成

pytest有很多非常强大的插件,并且这些插件能够实现很多的实用的操作

  • pytest pytest-xdist 测试用例分布式执行,多CPU分发
  • pytest-ordering 用于改变测试用例的执行顺序(从上到下)
  • pytest-rerunfailures 用例失败后重跑 pytest-html (生成html格式的自动化测试报告)
  • allure-pytest 用于生成美观的测试报告

2、快速入门

2.1、Pytest约定

模块名必须以test_开头或者_test结尾

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

测试方法必须以test开头

在这里插入图片描述

2.2、安装依赖

在这里插入图片描述

安装插件时可以通过将要安装的插件卸载requirements.txt中进行快速进行安装

2.3、运行方式

main.py

import pytest

if __name__ == '__main__':
    # pytest.main()

test_demo1.py

class Test_Demo1_C1:

    def test_01(self):
        print("hello world!")

test_demo2.py

class Test_Demo1_C2:

    def test_02(self):
        print("hello world!2")

test_demo3.py

class Test_Demo1_C3:

    def test_03(self):
        print("hello world!3")

test_demo4.py

class Test_Demo1_C4:

    def test_04(self):
        print("hello world!4")

test_demo5.py

class Test_Demo1_C4:

    def test_05(self):
        print("hello world!5")

test_demo7.py

import time


class Test_Demo1_C6:

    def test_06(self):
        time.sleep(5)
        print("hello world!6")


class Test_Demo1_C7:

    def test_07(self):
        time.sleep(5)
        print("hello world!7")

test_demo8.py

import time


class Test_Demo1_C8:

    def test_08(self):
        time.sleep(5)
        print("hello world!8")

test_demo9.py

class Test_Demo1_C9:

    def test_09(self):
        print("hello world!9")

    def test_10(self):
        print("hello world!10")

    def test_11(self):
        print("hello world11")
        assert 1 != 1

    def test_12(self):
        print("hello world12")

在这里插入图片描述

1、主函数模式

运行所有

import pytest

if __name__ == '__main__':
    pytest.main()

指定包运行

import pytest

if __name__ == '__main__':
    pytest.main(["./pytest-demo"])  # 运行指定包

指定模块运行

import pytest

if __name__ == '__main__':
    pytest.main(["./pytest-demo1/test_demo3.py"])  # 运行指定模块
    pytest.main(["./pytest-demo1/test_demo3.py","./pytest-demo1/test_demo4.py"])

指定nodeid运行

import pytest

if __name__ == '__main__':
    pytest.main(["./pytest-demo1/test_demo5.py::Test_Demo1_C5::test_05"])  # 运行指定nodeid

2、命令行模式

运行所有

pytest

指定包运行

pytest ./pytest-demo

指定模块运行

pytest ./pytest-demo/test_demo3.py
pytest ./pytest-demo/test_demo3.py ./pytest-demo1/test_demo4.py

指定nodeid运行

pytest ./pytest-demo1/test_demo5.py::Test_Demo1_C5::test_05

4、参数详解

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

-v:详细的信息

-vs:详细的信息,输出调试信息,包括print打印的信息

-n:多线程(在命令行中-n参数分割符为空格,主函数中-n参数分隔符为=)

在这里插入图片描述

–reruns:失败重试(在命令行中–reruns参数分割符为空格,主函数中–reruns参数分隔符为=)

在这里插入图片描述

-k:运行带指定关键字的

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/344584.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

WebDAV之葫芦儿·派盘+网盘精灵

网盘精灵 支持WebDAV方式连接葫芦儿派盘。 推荐一款让您的iPhone、iPod、iPad 变成WebDav客户端的软件,支持从WebDav服务器连接葫芦儿派盘服务进行上传和下载件。 网盘精灵让您的iPhone、iPod、iPad 变成WebDav客户端。功能:WebDav操作、文件共享、本地文件管理

jstack排查cpu占用高[复习]

这样就可以看到占用CPU高的代码位置。 总结:就是先查到占用高的应用和具体的线程,然后根据线程到堆积信息查找即可。 不过堆栈信息非十进制,需提前把线程号转为十六进制。 这样就可以看到占用CPU高的代码位置。 总结:就是先查到…

JavaScript------面向对象

目录 一、面向对象编程(OOP) 基本概念 二、类 1、语法 2、通过类创建对象 3、类的属性 4、类的方法 5、构造函数 三、面向对象的三个特点 1、封装 如何确保数据的安全(实现封装的方式): 2、继承 在子类中&a…

【LeetCode】每日一题(4)

目录 题目:1124. 表现良好的最长时间段 - 力扣(Leetcode) 题目的接口: 解题思路: 代码: 过啦!!! 写在最后: 题目:1124. 表现良好的最长时间…

算法思想 - 回溯算法

Backtracking(回溯)属于 DFS, 本文主要介绍算法中Backtracking算法的思想。回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。回溯法是一种…

ChatGPT 类 AI 软件供应链的安全及合规风险

AIGC将成为重要的软件供应链近日,OpenAI推出的ChatGPT通过强大的AIGC(人工智能生产内容)能力让不少人认为AI的颠覆性拐点即将到来,基于AI将带来全新的软件产品体验,而AI也将会成为未来软件供应链中非常重要的一环。在O…

【项目精选】基于WEB的仓库管理系统的设计与实现(论文+视频+源码)

点击下载源码 仓库物品的管理是与我们的日常生活息息相关的一个重大问题。随着我国经济飞速的发展,改革开放的不断深入,企业要想在激烈的市场竞争中立于不败之地,要想继续的发展与生存,没有现代化的管理方式与方法是万万不行的&am…

torch.nn.parameter 生成可更新的 tensor (requires_grad = True)

torch.nn.parameter 是 PyTorch 中的一种特殊类型的 tensor,它主要用于存储神经网络中的参数。这些参数可以被自动求导和被优化器自动更新。使用 torch.nn.Parameter 定义的tensor 会被自动添加到模型的参数列表中。 \quadtorch.nn.Parameter 是继承自 torch.Tensor…

vite+vue3搭建的工程热更新失效问题

前段时间开发新的项目,由于没有技术上的限制,所以选择了vitevue3ts来开发新的项目,一开始用vite来开发新项目过程挺顺利,确实比vue2webpack的项目高效些(为什么选择vite),但是过了一段时间后,不…

android组件化

学习流程:1.开源最佳实践:Android平台页面路由框架ARouter-阿里云开发者社区 (aliyun.com)2.中文ARouter使用API:https://github.com/alibaba/ARouter/blob/master/README_CN.md3.看当前文档后面的代码4.这是通俗易懂的文章:https…

使用 Nodejs、Express、Postgres、Docker 在 JavaScript 中构建 CRUD Rest API

让我们在 JavaScript 中创建一个 CRUD rest API,使用:节点.js表达续集Postgres码头工人码头工人组成介绍这是我们将要创建的应用程序架构的架构:我们将为基本的 CRUD 操作创建 5 个端点:创造阅读全部读一个更新删除我们将使用以下…

【H.264】码流解析 annexb vs avcc

H264码流解析及NALUAVCC和ANNEXB 前者是FLV容器、mp4 常用的。后者 是实时传输使用,所以是TS 一类的标准。VLC显示AVC1就是AVCC AVCC格式 也叫AVC1格式,MPEG-4格式,字节对齐,因此也叫Byte-Stream Format。用于mp4/flv/mkv, VideoToolbox。 – Annex-B格式 也叫MPEG-2 trans…

微信公众号扫码授权登录思路

引言 上学期研究了一下微信登录相关内容,也写了两三篇笔记,但是最后实际登录流程没有写,主要因为感觉功能完成有所欠缺,一直也没有好的思路;这两天我又看了看官方文档,重新构思了一下微信公众号登录相关的…

操作系统综合实验

实验目的 加深对进程概念理解,进一步认识进程并发执行掌握Linux系统的进程创建和终止操作掌握文件系统调用及文件标准子例程的编程方法掌握Linux下终端图形编程方法,能编写基于文本的图形界面掌握proc文件系统的使用 相关知识 Linux C编程中的头文件 …

知识点整合

⭐面试 自我介绍(优势岗位匹配度) 为什么来我们公司(对公司的了解) 讲讲做的项目(为什么这么做,思路和贡献) 跨部门涉案的业务流程 我们跨部门涉案业务主要是本系统、配合物流系统和罚没系…

二战字节跳动成功上岸,准备了小半年,拿27k也算不上很高吧~

先说下我基本情况,本科不是计算机专业,现在是学通信,然后做图像处理,可能面试官看我不是科班出身没有问太多计算机相关的问题,因为第一次找工作,字节的游戏专场又是最早开始的,就投递了&#xf…

SpringMVC传值

实现步骤 先看后台代码如何获取前端传过来的数据,直接在方法的参数列表中添加RequestParam(xxx),再在后面加上参数列表即可 不过这样的方式会出现一个问题:当前端页面没有提交相应的数据过来的时候,后台会出现异常,所…

Elasticsearch7.8.0版本进阶——数据读流程

目录一、数据读流程概述二、数据读流程步骤2.1、数据读流程图2.2、数据读流程步骤(从主分片或者副本分片检索文档的步骤顺序)2.3、数据读流程注意事项一、数据读流程概述 从主分片或者从其它任意副本分片检索文档。 二、数据读流程步骤 2.1、数据读流…

5_机试_递归和分治

一、递归 本章介绍程序设计中的另一个非常重要的思想一递归策略。递归是指函数直接或间接调用自身的一种方法,它通常可把一个复杂的大型问题层层转化为与原问题相似但规模较小的问题来求解。递归策略只需少量的程序就可描述解题过程所需的多次重复计算,…

谈谈Java多线程离不开的AQS

如果你想深入研究Java并发的话,那么AQS一定是绕不开的一块知识点,Java并发包很多的同步工具类底层都是基于AQS来实现的,比如我们工作中经常用的Lock工具ReentrantLock、栅栏CountDownLatch、信号量Semaphore等,而且关于AQS的知识点…