【pytest】单元测试文件的写法

前言

可怜的宾馆,可怜得像被12月的冷雨淋湿的一条三只腿的黑狗。——《舞舞舞》

在这里插入图片描述


         \;\\\;\\\;

目录

    • 前言
    • test_1或s_test格式
    • 非测试文件
    • @pytest.fixture()装饰器
    • pytest+selenium

test_1或s_test格式

要么 test_前缀 在前,要么 _test后缀 在后!

#test_1.py
def test_1():
    name='aa'
    assert 'bb'==name

def test_2():
    name='a'
    assert 'bcb'==name

def test_3():
	a = 1
	assert a == 2


def test_4():
	a = 4
	assert a == 2
	assert 'a' in 'abc'
	assert 'a' not in 'abc'
	assert 'a' is not True
	assert 'a' is False

右击可以单独运行某个函数,看看哪个错了!

class TestTint:
	def test_5(self):
		a = 1
		assert a == 2

	def test_6(self):
		a = 1
		assert a == 2

	def test_7(self):
		a = 1
		assert a == 2

在这里插入图片描述

         \;\\\;\\\;

非测试文件

如果是按pytest格式的文件名,但是内容不是测试的话,那么会出现(没有发现测试)

#test_calc.py
a = 1
b = 2
print(a + b)

在这里插入图片描述
         \;\\\;\\\;

@pytest.fixture()装饰器

import pytest


@pytest.fixture(scope='function')
def fixture1():
	print('前置步骤1')
	return 4


@pytest.fixture(scope='function')
def fixture2():
	print('前置步骤2')
	return 2

@pytest.fixture(scope='function',autouse=True)
def fixture3():
	print('前置步骤3')
	return 2



def test_1(fixture1,fixture2):
	assert fixture1 == 2
	assert fixture2 == 2


def test_2(fixture3):
	assert fixture3 == 2


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

可以在测试函数的位置,右击运行test_1或test_2函数

         \;\\\;\\\;

pytest+selenium

关于selenium使用的edge驱动器,版本要和电脑上装的edge版本一致!

pytest类要以Test为前缀

#test_f.py
from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep
import pytest


# 前置方法
@pytest.fixture(scope='class')
def driver():
	driver = webdriver.Edge(executable_path=r"C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Scripts\msedgedriver.exe")
	#C:\ProgramData\anaconda3\Scripts\msedgedriver.exe
	return driver


class TestSpider:

	# fixture函数作为形参
	def test_baidu(self, driver):
		driver.get('https://www.baidu.com/')
		title = driver.title
		url = driver.current_url

		text = driver.find_element(By.CSS_SELECTOR, "a[href*='news.baidu.com']").text

		button = driver.find_element(By.ID, 'su').get_attribute('value')

		# 检测
		assert title == '百度一下,你就知道'
		assert url == 'https://www.baidu.com/'
		assert text == '新闻'
		assert button == '百度一下'

# sleep(3)
# driver.close()


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

运行命令 pytest test_f.py

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

从头到尾的数据之旅

目录 引言 链表介绍 单向链表的接口实现 结构 创建节点 头插 尾插 头删 尾删 打印 节点查找 节点前插入 节点删除 内存释放 总结 引言 在前面的学习中,我们深入了解了顺序表,通过其增删查改的操作,我们发现了顺序表在某些情况…

MistralAI发布全球首个MoE大模型-Mixtral 8x7B,创新超越GPT-4

引言 MistralAI,一家法国的初创企业,近期在AI界引发了轰动,刚刚发布了全球首个基于MoE(Mixture of Experts,混合专家)技术的大型语言模型——Mistral-8x7B-MoE。这一里程碑事件标志着AI技术的一个重要突破…

【文心一言】使用飞桨 AI Studio 快速搭建,看图识猜成语应用

目录 一、背景二、实践三、创建应用3.1、零代码开发3.2、应用名称3.2、模型训练3.3、开始训练 四、应用部署4.1、发布项目4.2、搜索应用4.3、应用部署4.4、获取令牌4.4、导入依赖4.5、配置CORS4.6、使用测试API4.7、运行4.8、测试API接口4.9、前端API接口 五、启动前端5.1、模块…

百度文库下载要用券?Kotlin爬虫几步解决

百度作为国内知名的网站,尤其是文库里面有各种丰富的内容,对我们学习生活都有很大的帮助,就因为其内容丰富,如果看见好用有意思的文章还用复制粘贴等方式就显得有点落后了,今天我将用我所学的爬虫知识给你们好好上一课…

git 相关操作说明

1.先下载git相关软件 下载地址: https://git-scm.com/download/win下载其中一个安装 2.打开gitee网站,注册账号 3.打开个人中心,选择ssh公钥,查看如何生成公钥 4.生成公钥后,添加相应的公钥 具体仓库操作 1.第一…

Java二十一章 网络通信

1 网络程序设计基础 网络程序设计编写的是与其他计算机进行通信的程序。 局域网与互联网 服务器是指提供信息的计算机或程序,客户机是指请求信息的计算机或程序。网络用于连接服务器与客户机,实现两者间的相互通信。 网络协议 网络协议规定了计算机…

数字孪生的项目类型

数字孪生是一种通过数字模型对实际系统、产品或过程进行实时仿真和监测的技术。它可以在虚拟环境中模拟和反映现实世界中的物理对象、系统或过程。数字孪生技术有广泛的应用领域,以下是一些数字孪生可以涉及的项目类型,希望对大家有所帮助。北京木奇移动…

STM32储存器和总线构架

一、引言 本篇文章旨在介绍STM32小容量、中容量和大容量的储存器和系统构架,文中涉及到一些专有名词和概念较为抽象和陌生,建议读者能够查阅相关资料和知识加深了解。 二、正文 (一)、系统构架 在小容量、中容量和 大容量产品中…

犹豫不决先排序,步步紧逼双指针---力扣刷题

目录 第一题:和为s的两个数 第二题:和为0的三个数 第三题:四数之和 第一题:和为s的两个数 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 思路: 法一先想到暴力枚举,即利用…

GoEasy使用手册

GoEasy官网 登录 - GoEasy 即时通讯聊天案例 GoEasy - GoEasy (gitee.com) 注意事项 接口使用人数上限为15,超出之后会请求超时返回408状态码,可以新建一个应用用来更换common Key 创建应用 ​ 添加应用名称,其余默认,点击…

Java - JVM内存模型及GC(垃圾回收)机制

JVM内存模型 JVM堆内存划分(JDK1.8以前) JVM堆内存划分(JDK1.8之后) 主要变化在于: java8没有了永久代(虚拟内存),替换为了元空间(本地内存)。常量池&#…

电影《三大队》观后感

上周点播看了电影《三大队》,这部电影讲述的是三大队警员,在办案过程中,因为把犯罪嫌疑人打死后,锒铛入狱后,后来出来后,再次抓捕犯罪嫌疑人的故事。 (1)故事情节 有一次&#xff0c…

无mac在线申请hbuilderx打包ios证书的方法

hbuilderx是一个跨平台的开发工具,可以开发android和ios的app应用。打包hbuilderx应用需要hbuilderx打包证书。但是很多使用hbuilderx开发的程序员,并没有mac电脑,而申请ios的证书,hbuilderx官网的教程却是需要mac电脑的&#xff…

cache教程 2.单机并发缓存

0.对原教程的一些见解 个人认为原教程中两点知识的引入不够友好。 首先是只读数据结构 ByteView 的引入使用是有点迷茫的,可能不能很好理解为什么需要ByteView。 第二是主体结构 Group的引入也疑惑。其实要是熟悉groupcache,那对结构Group的使用是清晰…

版本控制:让你的代码有迹可循

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

viple与物理机器人(一):线控模拟

为了检测viple程序与物理机器人是否能顺利连接上 如果能顺利连接上,那么,可以通过内建事件从而控制物理机器人的前进、后退、左转、右转以及暂停。 如果不能连接上,首先,程序无法控制物理机器人,其次,当vip…

c++STL使用时的迭代器失效问题

迭代器失效本质上有两种情况: 一是pos的意义变了(指向的位置不是想要指向位置),二是pos变成了野指针(使用了一块已经被释放了的空间)。 迭代器失效会导致程序出现莫名其妙的越界访问、编译报错和获取的位置…

计算机网络:应用层(一)

我最近开了几个专栏,诚信互三! > |||《算法专栏》::刷题教程来自网站《代码随想录》。||| > |||《C专栏》::记录我学习C的经历,看完你一定会有收获。||| > |||《Linux专栏》&#xff1…

uniapp,点击选中并改变颜色,第二次点击取消选中状态

一、效果图 二、代码实现 字符串的indexOf和数组的indexOf用法一致! arr.indexOf(item) 该方法返回某个元素在数组中的位置。若没检索到,则返回 -1。 关键代码:(通过:class绑定) :class"selectList.indexOf(sub.type) ! -1 ? right_ite…

Linux Zabbix企业级监控平台本地部署并实现远程访问

前言 Zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。 本地zabbix web管理界面限制在只能局域…