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

news2024/12/23 3:52:01

前言

可怜的宾馆,可怜得像被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

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

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

相关文章

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

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

人工智能在智慧工地中的应用场景

随着料技的不断发展,人工智能在各个领域都有着广泛的应用。智慧工地作为人工智能在建筑行业的应用领域之一,通过引入人工智能技术,可以提高工地的管理效率、降低事故发生概率、提升工人的工作效率,从而实现智能化、自动化的工地管…

IPEmotion 2023 R3 现支持新款数据记录仪IPE833

新发布的IPEmotion 2023 R3增加了多种新功能,其中最重要的新功能包括支持最新的数据记录仪IPE833和用于XCP测量的报文转信号功能。此外,它还增加了一项用于提高记录仪安全性的新功能。 — 创新一览 — ■ 支持新款数据记录仪IPE833 • 四路CAN FD接口&…

24款CBR600RR复活,CBR1000R电控下放,有望引进?

最近本田在欧洲市场亮相了停产已经6年的24款本田CBR600RR,传说中的F5复活了!24款CBR采用了全新的外观设计,可以看到前面也加上了流行的定风翼,不过设计是娇小一点的,另外本田的CBR600RR也是唯一在售的采用尾排设计的仿…

18、Web攻防——ASP安全MDB下载植入IIS短文件名写权限解析

文章目录 一、MDB默认下载1.1 搭建IIS网站1.2 搭建网站会出现的一些问题1.2 攻击思路 二、ASP后门植入连接三、IIS短文件名探针——安全漏洞四、IIS6.0文件解析漏洞五、IIS6.0任意文件上传漏洞 一、MDB默认下载 web攻防常见开发语言:ASP、ASPX、PHP、JAVA、Python、…

基于ssm四六级报名与成绩查询系统论文

摘 要 互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对四六级报名信息管理混乱,出错率高,信息安全性…

一体化超声波气象站科普解说

随着科技的不断发展,气象监测设备也在逐步升级。一体化超声波气象站作为新型气象监测设备,以其优势和预报能力,成为了气象监测领域的新宠。 一、一体化超声波气象站的特点 WX-CSQX12 一体化超声波气象站是一种集成了多种气象监测设备的新型…

蓝桥杯--数的拆分

蓝桥杯省赛 数的拆分,应该是一道数论的题目 连接:数的拆分 对有所有的样例,应该用long long 来表示。 n的范围是1e18次方,暴力绝对是行不通的,不能用暴力来解决。 这是一道数学的题目,需要对题目进行分…

链表TOP难度——排序链表

https://leetcode.cn/problems/sort-list/?envTypestudy-plan-v2&envIdtop-interview-150 采用分治思想解决这题,每次合并长度为1\2\4…的链表,合并思想和合并有序链表一致,单独写成一个函数即可。 合并思路如下: while(分治…

赛900定妆照亮相3个色,配Stylema卡钳,风琴排气,后减震有黑科技?

钱江的赛900工信部早就给大家报道过,使用的是奥古斯塔的921发动机,之前有说叫赛1000,又说叫赛921,现在名字终于是定了,叫赛900RR,那么目前钱江赛系列的产品线就清晰了:赛1000、赛900、赛800、赛…

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

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

GoEasy使用手册

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

python使用vtk与mayavi三维可视化绘图

VTK(Visualization Toolkit)是3D计算机图形学、图像处理和可视化的强大工具。它可以通过Python绑定使用,适合于科学数据的复杂可视化。Mayavi 依赖于 VTK (Visualization Toolkit),一个用于 3D 计算机图形、图像处理和可视化的强大…

第三届iEnglish全国ETP大赛16强落位 诠释教育游戏价值

10日,与北方骤降的温度形成鲜明对比,以“玩转英语,用iEnglish”为主题的国内首个教育游戏活动第三届iEnglish全国ETP(English Through Pictures)大赛总决赛小组赛热火朝天的进行。随着“云帆沧海队”搭上末班车,本届活动16强全部产生,接下来的三个周末他们将向年度总冠军发起最…

nuitka Unknown property box-shadow,transition,transform

nuitka 打包后,控制台的错误解决方法 nuitka --standalone --show-memory --show-progress --nofollow-imports --follow-import-toneed --output-dirout --windows-icon-from-ico./static/test.ico mainUI2.py 由于Qt样式表不是CSS,QSS基于CSS2.1&…

百度地图通过DrawingManager.js改造绘制电子围栏,圆形、矩形、多边形、行政区域。( 方式2)

故事:在新项目中,还是需要绘制围栏,由于前面使用的vue-BMap 官方方式进行围栏绘制,虽说比较灵活,但代码量比较大,而且手工敲的代码量太大,因此进行第二中电子围栏的绘制探索。 注意&#xff1a…

traj_dist 笔记 源代码解析(python部分)

1distance.py 1.1 METRIC_DIC 不同实现方法对应的函数路径 1.2 sspd 功能: 计算轨迹 traj_1 和 traj_2 之间的对称化段路径距离。 参数: traj_1:一个二维 numpy 数组,代表第一个轨迹。traj_2:一个二维 numpy 数组…

??题-结构体两个人成绩比较输出分数高的【有问题,可是不知道在那里】

#include<stdio.h>struct stu{long int num;char name[10];double score;}a[2];int main(){ int i;for(i0;i<2;i)scanf("%ld,%s,%lf",&a[i].num,&a[i].name,&a[i].score);if(a[0].score>a[1].score)printf("分数高的学号和姓名是&…

4年外包终上岸,我只能说这类公司能不去就不去......

我大学学的是计算机专业&#xff0c;毕业的时候&#xff0c;对于找工作比较迷茫&#xff0c;也不知道当时怎么想的&#xff0c;一头就扎进了一家外包公司&#xff0c;一干就是4年。现在终于跳槽到了互联网公司了&#xff0c;我想说的是&#xff0c;但凡有点机会&#xff0c;千万…

【后端学前端】第一天 css动画 内凹导航栏

1、学习信息 css动画 内凹导航栏_哔哩哔哩_bilibili 随便找的的视频&#xff0c;主要原因是在公司不方便有声音 2、源码 最终源码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title…