pytest

1.安装

pip install pytest

pytest官网:https://docs.pytest.org/en/stable/

2.编写规则

1.测试文件已test开头(或以test结尾)
2.测试类以Test开头,并且不能带有init方法
3.测试函数以test开头
4.断言使用基本的assert即可

3.pytest使用

1.运行

需要在pycharm设置界面配置
在这里插入图片描述

  • 用绿色执行箭头

在这里插入图片描述

  • 用main 方法执行
if __name__ == '__main__':pytest.main(['demo3.py'])
  • 用命令行
# 1.执行xxx.py文件里面的所有方法
pytest -v -s xxx.py
# 2.执行xxx.py文件里面指定的方法test_func1
pytest xxx.py::test_func1
pytest -k func1 xxxx.py  # 使用模糊匹配,使用-k选项标识

在这里插入图片描述

  • 使用pytest.mark在函数上进行标记
    首先写个配置文件pytest.ini
    在这里插入图片描述
    在测试用例注释执行或不执行
import pytestclass TestLoginCase(object):@pytest.mark.dodef test01(self):print('这是第一条测试用例')@pytest.mark.undodef test02(self):print('这是第二条测试用例')
# 命令执行xxx.py文件里标准执行的测试用例
pytest -m do xxx.py

2.pytest参数化

pytest.mark.parametrize(argnames,argvalues)
argvalues可以是列表,元组,字典

# 列表
data = ['123', '456']@pytest.mark.parametrize('pwd', data)
def test1(pwd):print(pwd)
# 元组
data1 = [('admin', '123', 'mbzx'), ('amdin', '456', 'm24x')]@pytest.mark.parametrize('username, password, vector', data1)
def test2(username, password, vector):print(username, password, vector)
# 字典
data2 = ({'user': 1,'pwd': 2},{'age': 3,'email': 'fg@qq.com'}
)@pytest.mark.parametrize('dic', data2)
def test3(dic):print(dic)
data3 = [pytest.param(1, 2, 3, id="(a+b):pass"),  # id的值可以自定义,只要方便理解每个用例是干什么的即可pytest.param(4, 5, 10, id="(a+b):fail")
]def add(a, b):return a + b@pytest.mark.parametrize('a,b,expect', data3)
def test04(a, b, expect):assert add(a, b) == expect

3.pytest.fixture

1.定义fixture跟定义普通函数差不多,唯一区别就是在函数上加个装饰器@pytest.fixture
2.fixture命名不要以test开头,跟用例区分开。fixture是有返回值,没有返回值默认为None。
3.用例调用fixture的返回值,直接就是把fixture的函数名称当做变量名称。

@pytest.fixture()
def demo():print('这是一个例子')return 1
def test05(demo):print('这是一个测试')

4.setup和teardown

1.模块级(setup_module/teardown_module)开始于模块始末,全局的
2.函数级(setup_function/teardown_fuction)只对函数用例生效(不在类中)

import pytestdef setup_module():print('setup_module')def teardown_module():print('teardown_module')def setup_function():print('setup_function')def teardown_function():print('teardown_function')def test1():print('test1')def test2():print('test2')

在这里插入图片描述
3.类级(setup_class/teardown_class)只在类中前后运行一次(在类中)
4.方法级(setup_method/teardown_method)开始于方法始末(在类中)
5.类里面的(setup/teardown)运行在调用方法的前后

import pytestclass TestCase01(object):@classmethoddef setup_class(cls):print('setup_class')@classmethoddef teardown_class(cls):print('teardown_class')@classmethoddef setup_method(cls):print('setup_method')@classmethoddef teardown_method(cls):print('teardown_method')@classmethoddef setup(cls):print('setup')@classmethoddef taerdown(cls):print('teardown')def test1(self):print('test1')def test2(self):print('test2')def test3(self):print('test3')

在这里插入图片描述

4.生成测试报告

1.安装

pip install allure-pytest

2.官方文档:https://docs.qameta.io/
3.下载allure
地址:https://dl.bintray.com/qameta/generic/io/qameta/allure/2.7.0/

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

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

相关文章

基于树莓派设计的酒店房间号智能识别系统(图像识别)

基于树莓派4B设计的酒店房间号智能识别系统(图像识别) 一、设计需求 酒店房间识别系统的主要目的是:通过图像处理技术,以机器视觉的方式识别光学传感器传回的酒店房间图像中的数字,该系统可以以非接触的方式,以图像的方式获得需要的酒店房间读数,这能极大提高老式的酒店房…

Matlab图像处理-乘法运算

乘法运算 两幅图像进行乘法运算主要实现两个功能: 一是可以实现掩模操作,即屏蔽图像的某些部分; 二是如果一幅图像乘以一个常数因子,如果常数因子大于1,将增强图像的亮度,如果因子小于1则会使图像变暗。…

NGINX相关配置

NGINX相关配置 NGINX配置信息 nginx 官方帮助文档:http://nginx.org/en/docs/Nginx的配置文件的组成部分: 主配置文件:/conf/nginx.conf(/nginx/conf/nginx.conf) 子配置文件: include conf.d/*.conf#事件驱动相关的配置 同步 event { wo…

MySQL表的增删改查

文章目录 MySQL表的增删改查1. Create1.1 单行数据插入1.2 多行数据插入1.3 插入否则更新1.4 替换 2. Retrieve2.1 SELECT 列2.1.1 全列查询2.1.2 指定列查询2.1.3 查询字段为表达式2.1.4 为查询结果指定别名2.1.5 结果去重 2.2 WHERE 条件2.2.1 英语不及格的同学及英语成绩(&l…

〔017〕Stable Diffusion 之 常用模型推荐 篇

✨ 目录 🎈 模型网站🎈 仿真系列🎈 国风系列🎈 卡通动漫系列🎈 3D系列🎈 一些好用的lora模型 🎈 模型网站 由于现在大模型超级多,导致每种画风的模型太多,那么如何选择最…

软年架构复用-架构师之路(十一)

软件架构复用 软件产品线是 一组产业密集型系统,规定用公用的 核心资产集成 开发而来。 机会复用 和 系统复用。 机会复用:临时发现有可服用资产立马复用。 系统复用:开发之前进行规划好哪些需要复用。 复用的三个阶段: 获取到…

Compressor For Mac强大视频编辑工具 v4.6.5中文版

Compressor for Mac是苹果公司推出的一款视频压缩工具,可以将高清视频、4K视频、甚至是8K视频压缩成适合网络传输或存储的小文件。Compressor支持多种视频格式,包括H.264、HEVC、ProRes和AVC-Intra等,用户可以根据需要选择不同的压缩格式。 …

CSS笔记

介绍 CSS导入方式 三种方法都将文字设置成了红色 CSS选择器 元素选择器 id选择器 图中div将颜色控制为红色,#name将颜色控制为蓝色,谁控制的范围最小,谁就生效,所以第二个div是蓝色的。id属性值要唯一,否则报错。 clas…

Failed to load ApplicationContext解决办法,spring版本问题

有如下报错: "D:\Program Files\Java\jdk-13.0.1\bin\java.exe" -agentlib:jdwptransportdt_socket,address127.0.0.1:7325,suspendy,servern -ea -Didea.test.cyclic.buffer.size1048576 -Dfile.encodingUTF-8 -classpath "D:\Program Files\JetBr…

【Linux】深入理解文件操作

文章目录 初次谈论文件重温C语言文件操作系统文件操作接口openwriteread 再次谈论文件文件描述符文件描述符的分配规则 重定向什么是重定向重定向的本质系统调用接口实现重定向<、>、>> 初次谈论文件 开始之前先谈论一下关于文件的一些共识性问题。 一个文件可以…

wxpython + cef 是优秀的 WebView 组件

CEF 即 (Chromium Embedded Framework)&#xff1b;cef 是优秀的 WebView 组件。 pip install wxpython4.2 wxPython-4.2.0-cp37-cp37m-win_amd64.whl (18.0 MB) Successfully installed wxpython-4.2.0 pip install cefpython3 cefpython3-66.1-py2.py3-none-win_amd64.whl …

C++学习记录——이십팔 C++11(4)

文章目录 包装器1、functional2、绑定 这一篇比较简短&#xff0c;只是因为后要写异常和智能指针&#xff0c;所以就把它单独放在了一篇博客&#xff0c;后面新开几篇博客来写异常和智能指针 包装器 1、functional 包装器是一个类模板&#xff0c;对可调用对象类型进行再封装…

江西抚州新能源汽车3d扫描零部件逆向抄数测量改装-CASAIM中科广电

汽车改装除了在外观方面越来越受到消费者的青睐&#xff0c;在性能和实用性提升上面的需求也是日趋增多&#xff0c;能快速有效地对客户指定汽车零部件进行一个改装&#xff0c;是每一个汽车改装企业和工程师的追求&#xff0c;也是未来消费者个性化差异化的要求。下面CASAIM中…

Fei-Fei Li-Lecture 16:3D Vision 【斯坦福大学李飞飞CV课程第16讲:3D Vision】

目录 P1 2D Detection and Segmentation​编辑 P2 Video 2D time series P3 Focus on Two Problems P4 Many more topics in 3D Vision P5-10 Multi-View CNN P11 Experiments – Classification & Retrieval P12 3D Shape Representations P13--17 3D Shape Rep…

好用的可视化大屏适配方案

1、scale方案 优点&#xff1a;使用scale适配是最快且有效的&#xff08;等比缩放&#xff09; 缺点&#xff1a; 等比缩放时&#xff0c;项目的上下或者左右是肯定会有留白的 实现步骤 <div className"screen-wrapper"><div className"screen"…

同源策略以及SpringBoot的常见跨域配置

先说明一个坑。在跨域的情况下&#xff0c;浏览器针对复杂请求&#xff0c;会发起预检OPTIONS请求。如果服务端对OPTIONS进行拦截&#xff0c;并返回非200的http状态码。浏览器一律提示为cors error。 一、了解跨域 1.1 同源策略 浏览器的同源策略&#xff08;Same-Origin Po…

06.sqlite3学习——DQL(数据查询)(全)

目录 SQLite——DQL&#xff08;数据查询&#xff09; 数据集 select语句 条件查询 比较 确定范围 确定集合 like 查询记录 查询不重复的记录 排序和限制 排序 限制 聚合 聚合函数 语法 SQLite Group By详解 语法 实例 SQLite Having 子句 语法 实例 多…

[JavaWeb]【十一】web后端开发-SpringBootWeb案例(登录)

目录 一、登录功能 1.1 思路 1.2 LoginController 1.3 EmpService 1.4 EmpServiceImpl 1.5 EmpMapper 1.6 启动服务-测试 1.7 前后端联调 二、登录校验&#xff08;重点&#xff09; 2.1 问题 2.2 问题分析 2.3 登录校验​编辑 2.4 会话技术 2.4.1 会话技术 2.4.2 …

SpringBoot权限认证

SpringBoot的安全 常用框架&#xff1a;Shrio,SpringSecurity 两个功能&#xff1a; Authentication 认证Authorization 授权 权限&#xff1a; 功能权限访问权限菜单权限 原来用拦截器、过滤器来做&#xff0c;代码较多。现在用框架。 SpringSecurity 只要引入就可以使…

2023年6月GESP C++ 三级试卷解析

2023年6月GESP C 三级试卷解析 一、单选题&#xff08;每题2分&#xff0c;共30分&#xff09; 1.高级语言编写的程序需要经过以下&#xff08; &#xff09;操作&#xff0c;可以生成在计算机上运行的可执行代码。 A.编辑 B.保存 C.调试 D.编译 【答案】D 【考纲知识点…