pytest【1】

news2025/2/26 5:59:09

文章目录

  • pytest
    • 测试用例示例
    • 测试用例批量执行
      • 1、terminal执行pytest
      • 2、main代码启动
    • 测试结果
    • fixtures(夹具)
      • 创建fixtures
      • 使用fixtures
      • fixtures共享范围
    • POM:对元素的封装复用

pytest

单selenuim的问题:

  • 代码重用性
  • 元素加载延迟
  • 浏览器重复驱动

解决方法:封装框架 pytest

测试用例示例

  • 创建 test_ 开头的文件
  • 创建 test_ 开头的函数(或类)
  • 用例中使用断言assert
def test_a(): # 测试用例a
	assert 2==2  #若不符合预期,则
class TestYongli:  # 测试套件,,类,将不同的测试用例打包在一起
	def test_b():  # 测试用例b
		...

例如:文件名test_class_3.py

def test_a():
    a = 2
    b = 2
    assert a == b
    print("a==b")

def test_b():
    a = 1
    b = 2
    assert a == b
    print("a==b")

def test_c():
    a = 3
    b = 3
    c = 4
    assert a == b
    assert a == c
    print("a==b")

执行结果:(那个50%和100%是测试进度条,表示执行了50%的用例。。)
要注意:如果鼠标点在某个函数里点执行的话,执行的是那一个函数用例而不是全部。
在这里插入图片描述

============================= test session starts =============================
collecting ... collected 3 items

test_class_3.py::test_a PASSED                                           [ 33%]a==b

test_class_3.py::test_b FAILED                                           [ 66%]
test_class_3.py:11 (test_b)
1 != 2

Expected :2
Actual   :1
<Click to see difference>

def test_b():
        a = 1
        b = 2
>       assert a == b
E       assert 1 == 2

test_class_3.py:15: AssertionError

test_class_3.py::test_c FAILED                                           [100%]
test_class_3.py:18 (test_c)
3 != 4

Expected :4
Actual   :3
<Click to see difference>

def test_c():
        a = 3
        b = 3
        c = 4
        assert a == b
>       assert a == c
E       assert 3 == 4

test_class_3.py:24: AssertionError


========================= 2 failed, 1 passed in 0.20s =========================

测试用例批量执行

1、terminal执行pytest

在这里插入图片描述
执行结果:
在这里插入图片描述

2、main代码启动

创建main.py

import pytest

if __name__ == "__main__":	# 表示当当前文档是被import调用时,该if后的代码块不会被执行  
    pytest.main()  # 程序入口
    
# 当python文件直接被运行时,if __name__ == '__main__': 语句下面的代码段将被执行。
# 当python文件以模块形式被调用时,if __name__ == '__main__': 语句下面的代码段不会被执行。

测试结果

F:功能有问题;E:测试框架有问题
在这里插入图片描述

fixtures(夹具)

可以在测试用例的执行前和执行后,自动执行一部分代码,例如浏览器的启动和关闭。实现代码复用。

创建fixtures

fixtures = 函数 + fixtures装饰器
文件名必须叫 conftest.py

import pytest
from selenium import webdriver

@pytest.fixture()
def driver():
    d = webdriver.Chrome()  # 启动浏览器
    d.get("https://baidu.com")  # 控制浏览器,访问百度
    return d

使用fixtures

在测试用例的参数列表中,加上夹具名称,夹具就会被自动使用

def test_b(self, driver):   # 测试用例,“driver”表示调用了conftest.py中的driver函数
	...
def test_c(self, driver):
	...  

fixtures共享范围

将启动浏览器设置为共享范围,使得多个测试用例调用driver时只启动一次浏览器。
创建夹具,可以指定夹具的共享范围,在共享范围内的用例,会共享同一个夹具
pytest的夹具共享范围有5个:

  • function(函数)(默认,最小)
  • class(类)
  • module(文件)
  • package(文件夹)
  • session(会话)
    每个fixture只能有一个范围

两个测试用例如果要使用同一个浏览器,只需要调整fixtures的范围;
上述用例处于同一个类,就可以将fixtures改为:
@pytest.fixture(scope=“class”)

import pytest
from selenium import webdriver

@pytest.fixture(scope="class") # 共享范围为class
def driver():
    d = webdriver.Chrome()  # 启动浏览器
    d.get("https://baidu.com")  # 控制浏览器,访问百度
    return d

POM:对元素的封装复用

POM实现对页面的封装
Page Object Model:页面对象模型,通过面向对象的思想,封装页面的元素。

属性:
方法:自动化操作

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

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

相关文章

第十五届蓝桥杯测试组模拟赛两期

文章目录 功能测试一期-场景法-登录功能一期-等价类-边界值-添加用户账号输入框一期-登录-缺陷报告一期- UI自动化测试一期-单元测试-路径覆盖二期-正交法-搜索条件组合二期-测试用例二期-缺陷报告二期-自动化测试二期-单元测试-基本路径覆盖 功能测试 一期-场景法-登录功能 …

DWC-60B冲击试样低温槽

一、概述 DWC—60B型冲击试验低温槽是本公司根据GB229-2020《金属夏比缺口冲击试验方法》中对低温装置的要求而最新研制开发的压缩机制冷设备。本设备采用进口 双压缩机制冷技术&#xff0c;采用热平衡原理及循环搅拌方式&#xff0c;达到对试样的自动均匀冷却、恒温&#xff0…

4-云原生监控体系-Grafana-基本使用

1. 介绍 使用Grafana&#xff0c;您可以通过漂亮、灵活的仪表板创建、探索和共享所有数据。查询、可视化、提醒和理解您的数据&#xff0c;无论数据存储在何处。 图片出处&#xff1a; https://grafana.com/grafana/ 官方网站 2. 界面介绍 Connections 可以配置数据源&#x…

软件行业之选:CRM系统如何赋能业务增长?

“CRM系统从整合营销渠道、自动化营销流程、强化客户全周期管理、增强服务能力、完善企业内部流程、开展数字化决策六个方面赋能软件行业。” 软件行业由于存在较高的技术壁垒&#xff0c;很多时候销售与客户沟通不顺畅&#xff0c;实施与客户沟通有难度&#xff0c;售后服务周…

国税发票查验接口、电子增值税发票查验接口、数电票查验接口

翔云发票查验接口支持增值税发票管理系统开具发票的真伪&#xff0c;通过发票代码、号码、日期、金额、校验码四要素信息进行真伪的查验&#xff0c;支持返回全票面信息&#xff0c;API接口便于集成&#xff0c;可适用于多种应用场景。 发票查验接口python调用示例&#xff1a;…

D. Yet Another Palindrome Problem另一个回文问题

**思路:**直接找俩一样的数字看看他们中间是否存在大于等于1个数的情况 #include<iostream> #include<algorithm> #include<map> using namespace std; long long T,n,sum; int arr[6005]; map<int, int>mm; int main() {cin >> T;while (T--){…

vue实现海康h5player问题汇总

1. 引入问题 最开始写的时候&#xff0c;把h5player封装成了一个组件&#xff0c;把资源文件随便放在了一个目录下&#xff0c; 直接在子组件中引入&#xff0c;报错window.JSPlugin is not a constructor 或者JSPlugin is not defined 初步分析应该是引入资源文件失败&#x…

[Linux 进程控制(一)] 进程等待

文章目录 1、进程等待1.1 为什么要进程等待1.2 进程等待必要性1.3 进程等待的方法1.3.1 wait方法1.3.2 waitpid方法 1.4 获取子进程的status1.5 waitpid的第三个参数options 1、进程等待 1.1 为什么要进程等待 解决子进程僵尸问题带来的内存泄漏问题。子进程将父进程交给的任…

【上海大学计算机组成原理实验报告】三、微指令系统实验

一、实验目的 了解译码器、微指令结构的基本工作原理。学习设计微指令的方法。 二、实验原理 根据实验指导书的相关内容&#xff0c;本实验所用的实验箱的微指令系统控制总线宽度为24位&#xff0c;每个地址单元宽度也为24位&#xff0c;其中微指令存储器由3片8位存储器按照…

如何在SFTP工具中使用固定公网地址远程访问内网Termux系统

文章目录 1. 安装openSSH2. 安装cpolar3. 远程SFTP连接配置4. 远程SFTP访问4. 配置固定远程连接地址 SFTP&#xff08;SSH File Transfer Protocol&#xff09;是一种基于SSH&#xff08;Secure Shell&#xff09;安全协议的文件传输协议。与FTP协议相比&#xff0c;SFTP使用了…

期货开户市场是没硝烟的战场

另外&#xff0c;期货市场是没有硝烟的战场&#xff0c;《孙子兵法》、《吴子兵法》、《战略论》等兵法你最好也找来读一读。《金刚经》、《坛经》、《心经》、《道德经》等你最好也认真地学一学。我认为&#xff0c;从来没有哪个领域像金融交易领域这样充斥这么多的荒谬理论&a…

Python的基础知识学习路线2—运算符与变量类型(使用jupyter notebook进行操作:最全路线,每部分附有代码操作结果)

一、更改jupyter notebook 打开文件的位置 1、打开Anaconda Prompt终端&#xff0c;输入以下命令&#xff0c;创建配置文件&#xff1a;jupyter_notebook_config.py jupyter notebook --generate-config2、打开生成的配置文件 3、编辑配置文件jupyter_notebook_config.py&…

共享IP和独享IP如何选择,两者有何区别?

有跨境用户在选择共享IP和独享IP时会有疑问&#xff0c;不知道该如何进行选择&#xff0c;共享IP和独享IP各有其特点和应用场景&#xff0c;选择哪种方式主要取决于具体需求和预算。以下是对两者的详细比较&#xff1a; 首先两者的主要区别在于使用方式和安全性&#xff1a;共…

蓝桥杯2023年第十四届省赛真题-冶炼金属

题目描述 小蓝有一个神奇的炉子用于将普通金属 O 冶炼成为一种特殊金属 X。这个炉子有一个称作转换率的属性 V&#xff0c;V 是一个正整数&#xff0c;这意味着消耗 V 个普通金 属 O 恰好可以冶炼出一个特殊金属 X&#xff0c;当普通金属 O 的数目不足 V 时&#xff0c;无法继…

【C语言】C语言题库【附源码+持续更新】

欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 目录 1、练习2-1 Programming in C is fun! 2、练习2-3 输出倒三角图案 3、练习2-4 温度转换 4、练习2-6 计算物体自由下落的距离 5、练习2-8 计算摄氏温度 6、练习2-9 整数四则运算 7、练习2-10 计算分段函数[1…

深度学习500问——Chapter07:生成对抗网络(GAN)(1)

文章目录 7.1 GAN基本概念 7.1.1 如何通俗理解GAN 7.1.2 GAN的形式化表示 7.1.3 GAN的目标函数是什么 7.1.4 GAN的目标函数和交叉熵有什么区别 7.1.5 GAN的Loss为什么降不下去 7.1.6 生成式模型、判别式模型的区别 7.1.7 什么是mode collapsing 7.1.8 如何解决mode collapsing …

记一次小郭被挖矿后的应急响应

谨以此篇纪念我第n1次被挖矿经历。 时间&#xff1a;2024年3月18日&#xff08;星期一&#xff09; 地点&#xff1a;阿里云服务器 响应&#xff1a;确认–>抑制–>消除–>恢复–>总结 确认阶段&#xff1a; 2024年3月18日星期一早上收到了阿里云的短信和邮件…

城市道路井盖破损丢失目标检测数据集VOC-1377张

数据集格式&#xff1a;Pascal VOC格式(不包含分割路径的txt文件和yolo格式的txt文件&#xff0c;仅仅包含jpg图片和对应的xml) 图片数量(jpg文件个数)&#xff1a;1377 标注数量(xml文件个数)&#xff1a;1377 标注类别数&#xff1a;4 标注类别名称:["jg","jg…

2006-2021年各省能源消费总量数据(无缺失)

2006-2021年各省能源消费总量数据&#xff08;无缺失&#xff09; 1、时间&#xff1a;2006-2021年 2、来源&#xff1a;能源年鉴、各省年鉴 3、范围&#xff1a;30个省 4、指标&#xff1a;能源消费总量&#xff08;万吨标煤&#xff09; 5、缺失情况&#xff1a;无缺失 …

安卓Termux安装openssh结合内网穿透实现公网使用SFTP传输文件

文章目录 1. 安装openSSH2. 安装cpolar3. 远程SFTP连接配置4. 远程SFTP访问4. 配置固定远程连接地址 SFTP&#xff08;SSH File Transfer Protocol&#xff09;是一种基于SSH&#xff08;Secure Shell&#xff09;安全协议的文件传输协议。与FTP协议相比&#xff0c;SFTP使用了…