pytest 框架自动化测试

news/2024/12/28 22:45:40/

随笔记录

目录

1. 安装 

2. 安装pytest 相关插件

2.1 准备阶段

2.2 安装 

2.3 验证安装成功 

3. pytest测试用例的运行方式

3.1 主函数模式

3.1.1 主函数执行指定文件

 3.1.2 主函数执行指定模块

3.1.3 主函数执行某个文件中的某个类、方法、函数

3.1.4 主函数执行生成allure报告

3.2 命令行模式


1. 安装 

1. install pycharm
2. install python 
3. config Envrionment variable

2. 安装pytest 相关插件

2.1 准备阶段
# 将以下插件写入 requirements.txt 中pytest-rerunfailures         #用例失败后重跑
pytest-xdist                 # 测试用例分布式执行,多CPU 分发
pytest-ordering              # 控制用例执行顺序
pytest                       # pytest 框架
pytest-html                  # 生成html格式的自动化测试报告
allure-pytest                 # 用于生成美观的测试报告

2.2 安装 
terminal 执行 以下命令,一次性安装所有插件:
#  pip install -r .\requirements.txt  

2.3 验证安装成功 
执行一下命令,验证pytest 安装成功# pytestPS D:\Backup\自动化脚本\Riskcop> pytest
================================================================================================================================================== test session starts =================================================================================================================================================== 
platform win32 -- Python 3.7.9, pytest-7.4.0, pluggy-1.0.0
rootdir: D:\Backup\自动化脚本\Riskcop
plugins: allure-pytest-2.13.2, anyio-3.6.1, Faker-18.10.1, assume-2.4.3, forked-1.4.0, html-3.1.1, metadata-2.0.1, ordering-0.6, rerunfailures-10.2, xdist-2.5.0
collected 0 items================================================================================================================================================= no tests ran in 0.02s ================================================================================================================================================== 
PS D:\Backup\自动化脚本\Riskcop>

3. pytest测试用例的运行方式

3.1 主函数模式
#主函数植式
1. 运行所有:pytest.main()2. 指定模块:# pytest main(['-vs','<文件名>'])# pytest.main(-vs','test login.py])3. 指定目录:# pytest main(['-vs','<模块名>'])# pytest main(-vs','/interface_testcase])4. 通过nodeid指定用例运行:nodeid由模块名,分隔符(::),类名,方法名,函数名组成。4.1 运行指定函数# pytest main(['-vs','<模块名>/<文件名>::<方法名>'])# pytest.main(['-vs','./interface_testcase/test_interface.py::test_04_func'])4.2 运行某个类中的某个方法# pytest main(['-vs','<模块名>/<文件名>::<类名>::<方法名>'])# pytest main(['-       vs','./interface_testcase/test_interface.py::Testinterface::test_03_zhiliao'])# 参数详解:
-S:表示输出调试信息,包括print打印的信息
-V:显示更详细的信息
-VS:这两个参数一起用
分隔符- "::"
3.1.1 主函数执行指定文件
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
'''
@文件    :main.py
@说明    :
@时间    :2024/01/22 17:07:32
@作者    :magx
@版本    :1.0
'''import os
import time
import pytest# 当前路径 (使用adbpath 方法 可通过dos 窗口执行)
current_path = os.path.dirname(os.path.abspath(__file__))
print('current_path:',current_path)
# 上级目录
father_path = os.path.abspath(os.path.join(current_path,".."))# json 报告路径
json_report_path = os.path.join(current_path, './Reports/json')
# html 报告路径
html_report_path = os.path.join(current_path, './Reports/html')def print_hi(name):# Use a breakpoint in the code line below to debug your script.print(f'Hi, {name}')  # Press Ctrl+F8 to toggle the breakpoint.if __name__ == '__main__':'''-v : 详细信息 -  文件名:: 类名::方法名:-s : 表示输出调试信息,包括print 打印的信息'''# 方式1:# 指定运行文件  "./TestCases/test_AccountLevel_2.py"# test_AccountLevel_2.py# test_MultiRule_12pytest.main(['-vs','./TestCases/test_AccountLevel_2.py'])   # test_AccountLevel_2.py
 3.1.2 主函数执行指定模块
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
'''
@文件    :main.py
@说明    :
@时间    :2024/01/22 17:07:32
@作者    :magx
@版本    :1.0
'''import os
import time
import pytest# 当前路径 (使用adbpath 方法 可通过dos 窗口执行)
current_path = os.path.dirname(os.path.abspath(__file__))
print('current_path:',current_path)
# 上级目录
father_path = os.path.abspath(os.path.join(current_path,".."))# json 报告路径
json_report_path = os.path.join(current_path, './Reports/json')
# html 报告路径
html_report_path = os.path.join(current_path, './Reports/html')def print_hi(name):# Use a breakpoint in the code line below to debug your script.print(f'Hi, {name}')  # Press Ctrl+F8 to toggle the breakpoint.if __name__ == '__main__':'''-v : 详细信息 -  文件名:: 类名::方法名:-s : 表示输出调试信息,包括print 打印的信息'''# 方式2: 运行指定模块pytest.main(['-vs', './TestCases/'])
3.1.3 主函数执行某个文件中的某个类、方法、函数
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
'''
@文件    :main.py
@说明    :
@时间    :2024/01/22 17:07:32
@作者    :magx
@版本    :1.0
'''import os
import time
import pytest# 当前路径 (使用adbpath 方法 可通过dos 窗口执行)
current_path = os.path.dirname(os.path.abspath(__file__))
print('current_path:',current_path)
# 上级目录
father_path = os.path.abspath(os.path.join(current_path,".."))# json 报告路径
json_report_path = os.path.join(current_path, './Reports/json')
# html 报告路径
html_report_path = os.path.join(current_path, './Reports/html')def print_hi(name):# Use a breakpoint in the code line below to debug your script.print(f'Hi, {name}')  # Press Ctrl+F8 to toggle the breakpoint.if __name__ == '__main__':'''-v : 详细信息 -  文件名:: 类名::方法名:-s : 表示输出调试信息,包括print 打印的信息'''# 方法3: 指定运行某个文件中的某个类、方法、函数# 模块名/文件名::函数名# 文件名::类名::方法名pytest.main(['--vs','./TestCases/test_AccountLevel_2.py::cleanlog'])
3.1.4 主函数执行生成allure报告
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
'''
@文件    :main.py
@说明    :
@时间    :2024/01/22 17:07:32
@作者    :magx
@版本    :1.0
'''import os
import time
import pytest# 当前路径 (使用adbpath 方法 可通过dos 窗口执行)
current_path = os.path.dirname(os.path.abspath(__file__))
print('current_path:',current_path)
# 上级目录
father_path = os.path.abspath(os.path.join(current_path,".."))# json 报告路径
json_report_path = os.path.join(current_path, './Reports/json')
# html 报告路径
html_report_path = os.path.join(current_path, './Reports/html')def print_hi(name):# Use a breakpoint in the code line below to debug your script.print(f'Hi, {name}')  # Press Ctrl+F8 to toggle the breakpoint.if __name__ == '__main__':'''-v : 详细信息 -  文件名:: 类名::方法名:-s : 表示输出调试信息,包括print 打印的信息'''# ===================================================================================# --alluredir生成json格式报告# allure generate 使用generate命令导出html报告,json_report_path json格式报告路径, -o生成报告到文件夹, --clean清空原来的报告#执行pytest下的用例并生成json文件pytest.main(['-vs', './TestCases','--alluredir=%s' %json_report_path, '--clean-alluredir'])#, '--clean-alluredir'# 把json文件转成html报告os.system('allure generate %s -o %s --clean' %(json_report_path, html_report_path))
3.2 命令行模式
# 命令行模式
1. 运行所有:pytest
2. 指定模块:#  pytest -vs <文件名>#  pytest -vs test_login.py
3. 指定目录:#  pytest-vs  <模块名>#  pytest-vs ./interface_testcase
4. 指定目录:通过nodeid指定用例运行:nodeid由模块名,分隔符(::),类名,方法名,函数名组成#  pytest-vs ./interface testcase/test interface.py:test 04_func


http://www.ppmy.cn/news/1359288.html

相关文章

数据库事物复习

事务 比如说将张三的银行账户拿出一千给李四&#xff0c;首先需要查询张三的账户余额&#xff0c;扣除1000&#xff0c;然后如果给李四加上1000的过程中出现异常会回滚事务&#xff0c;临时修改的数据会回复回去。 -- 1. 查询张三账户余额 select * from account where name …

备战蓝桥杯 Day10(背包dp)

01背包问题 1267&#xff1a;【例9.11】01背包问题 【题目描述】 一个旅行者有一个最多能装 M&#xfffd; 公斤的背包&#xff0c;现在有 n&#xfffd; 件物品&#xff0c;它们的重量分别是W1&#xff0c;W2&#xff0c;...,Wn&#xfffd;1&#xff0c;&#xfffd;2&#…

Web前端3D JS框架和库 整理

在WebGL库和SVG/Canvas元素的支持下&#xff0c;JavaScript变得惊人的强大。几乎可以为网络构建任何东西&#xff0c;包括基于浏览器的游戏和本地应用&#xff0c;许多最新的突破性功能都在3D上运行。 为此&#xff0c;「数维图小编」整理了19个交互式3D Javascript库和框架&am…

【IP】固定虚拟机的IP地址

查询网关地址 在windows的cmd中输入ipconfig&#xff0c;可以查看对应的网关地址 查看虚拟机ip地址 # 查看虚拟机的ip地址 ifconfig 切换到网络相关的文件夹 cd /etc/sysconfig/network-scripts编辑ip相关配置文件 # 不同的centos版本对应的文件名不同&#xff0c;但是前…

TLC电视刷机记录

只要是电子设备都可以刷机....... 今天就帮家父解决下TCL电视系统更新失败问题 因为每个人的电视型号不同&#xff0c;所以要上去下载对应的型号 又或者上淘宝花10元买别人帮你找好的型号的固件&#xff0c;10元可以省很多时间精力去找合适型号的固件&#xff0c;值得&#x…

angular-引用本地json文件

angular-引用json文件&#xff0c;本地模拟数据时使用 在assets目录下存放json文件 大佬们的说法是&#xff1a;angular配置限定了资源文件的所在地&#xff08;就是assets的路径&#xff09;&#xff0c;放在其他文件夹中&#xff0c;angular在编译过程中会忽略&#xff0c;会…

docker部署seata1.6.0

docker部署seata1.6.0 Seata 是 阿里巴巴 开源的 分布式事务中间件&#xff0c;解决 微服务 场景下面临的分布式事务问题。需要先搭建seata服务端然后与springcloud的集成以实现分布式事务控制的过程 &#xff0c;项目中只需要在远程调用APi服务的方法上使用注解 GlobalTransa…

代码随想录算法训练营第36天| Leetcode 435. 无重叠区间、763.划分字母区间、56. 合并区间

文章目录 Leetcode 435. 无重叠区间Leetcode 763.划分字母区间Leetcode 56. 合并区间 Leetcode 435. 无重叠区间 题目链接&#xff1a; Leetcode 435. 无重叠区间 题目描述&#xff1a; 给定一个区间的集合 intervals &#xff0c;其中 intervals[i] [starti, endi] 。返回需…