| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 开发测试 -> 不夸张地说,这是我见过最通俗易懂的,pytest入门基础教程 -> 正文阅读 |
|
[开发测试]不夸张地说,这是我见过最通俗易懂的,pytest入门基础教程 |
Pytest简介 ? Pytest is a mature full-featured Python testing tool that helps you write better programs.The pytest framework makes it easy to write small tests, yet scales to support complex functional testing for applications and libraries. 通过官方网站介绍我们可以了解到,Pytest是一个非常成熟的全功能的python测试框架,主要有以下几个特点:
Pytest安装 1.直接使用pip命令安装: pip install -U pytest # -U是如果已安装会自动升级最新版本 (左右滑动查看完整代码) 2.验证安装结果: pytest --version # 展示当前安装版本 C:\Users\edison>pytest --version pytest 6.2.5 (左右滑动查看完整代码) 3.在pytest测试框架中,要遵循以下约束:
Pytest测试执行 pytest进行测试比较简单,我们来看一个实例: import pytest # 导入pytest包 def test_001(): # 函数以test_开头 print("test_01") def test_002(): print("test_02") if __name__ == '__main__': pytest.main(["-v","test_1214.py"]) # 调用pytest的main函数执行测试 (左右滑动查看完整代码) 这里我们定义了两个测试函数,直接打印出结果,下面执行测试: ============================= test session starts ============================= platform win32 -- Python 3.8.0, pytest-6.2.5, py-1.11.0, pluggy-1.0.0 -- D:\Code\venv\Scripts\python.exe cachedir: .pytest_cache rootdir: D:\Code collecting ... collected 2 items test_1214.py::test_001 PASSED [ 50%] test_1214.py::test_002 PASSED [100%] ============================== 2 passed in 0.11s ============================== Process finished with exit code 0 (左右滑动查看完整代码) 输出结果中显示执行了多少条案例、对应的测试模块、通过条数以及执行耗时。 测试类主函数 pytest.main(["-v","test_1214.py"]) (左右滑动查看完整代码) 通过python代码执行pytest.main():
main()括号内可传入执行参数和插件参数,通过[]进行分割,[]内的多个参数通过‘逗号,’进行分割:
-m=xxx: 运行打标签的用例 -reruns=xxx:失败重新运行 -q: 安静模式, 不输出环境信息 -v: 丰富信息模式, 输出更详细的用例执行信息 -s: 显示程序中的print/logging输出 --resultlog=./log.txt 生成log --junitxml=./log.xml 生成xml报告 断言方法 pytest断言主要使用Python原生断言方法,主要有以下几种:
import pytest # 导入pytest包 def add(x,y): # 定义以test_开头函数 return x + y def test_add(): assert add(1,2) == 3 # 断言成功 str1 = "Python,Java,Ruby" def test_in(): assert "PHP" in str1 # 断言失败 if __name__ == '__main__': pytest.main(["-v","test_pytest.py"]) # 调用main函数执行测试 (左右滑动查看完整代码) ============================= test session starts ============================= platform win32 -- Python 3.8.0, pytest-6.2.5, py-1.11.0, pluggy-1.0.0 -- D:\Code\venv\Scripts\python.exe cachedir: .pytest_cache rootdir: D:\Code collecting ... collected 2 items test_pytest.py::test_add PASSED [ 50%] test_pytest.py::test_in FAILED [100%] ================================== FAILURES =================================== ___________________________________ test_in ___________________________________ def test_in(): > assert "PHP" in str1 E AssertionError: assert 'PHP' in 'Python,Java,Ruby' test_pytest.py:11: AssertionError =========================== short test summary info =========================== FAILED test_pytest.py::test_in - AssertionError: assert 'PHP' in 'Python,Java... ========================= 1 failed, 1 passed in 0.18s ========================= Process finished with exit code 0 (左右滑动查看完整代码) 可以看到运行结果中明确指出了错误原因是“AssertionError”,因为PHP不在str1中。 常用命令详解 1.运行指定案例: if __name__ == '__main__': pytest.main(["-v","-s","test_1214.py"]) (左右滑动查看完整代码) 2.运行当前文件夹包括子文件夹所有用例: if __name__ == '__main__': pytest.main(["-v","-s","./"]) (左右滑动查看完整代码) 3.运行指定文件夹(code目录下所有用例): if __name__ == '__main__': pytest.main(["-v","-s","code/"]) (左右滑动查看完整代码) 4.运行模块中指定用例(运行模块中test_add用例): if __name__ == '__main__': pytest.main(["-v","-s","test_pytest.py::test_add"]) (左右滑动查看完整代码) 5.执行失败的最大次数。 使用表达式"--maxfail=num"来实现(注意:表达式中间不能存在空格),表示用例失败总数等于num 时停止运行。 ? 添加图片注释,不超过 140 字(可选) ? 添加图片注释,不超过 140 字(可选) 6.错误信息在一行展示。 在实际项目中如果有很多用例执行失败,查看报错信息将会很麻烦。使用"--tb=line"命令,可以很好解决这个问题。 ? 添加图片注释,不超过 140 字(可选) 接口调用 本地写一个查询用户信息的接口,通过pytest来调用,并进行接口断言。 # -*- coding: utf-8 -*- import pytest import requests def test_agent(): r = requests.post( url="http://127.0.0.1:9000/get_user", data={ "name": "吴磊", "sex": 1 }, headers={"Content-Type": "application/json"} ) print(r.text) assert r.json()['data']['retCode'] == "00" and r.json()['data']['retMsg'] == "调用成功" if __name__ == "__main__": pytest.main(["-v","test_api.py"]) (左右滑动查看完整代码) |
|
开发测试 最新文章 |
pytest系列——allure之生成测试报告(Wind |
某大厂软件测试岗一面笔试题+二面问答题面试 |
iperf 学习笔记 |
关于Python中使用selenium八大定位方法 |
【软件测试】为什么提升不了?8年测试总结再 |
软件测试复习 |
PHP笔记-Smarty模板引擎的使用 |
C++Test使用入门 |
【Java】单元测试 |
Net core 3.x 获取客户端地址 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/18 2:56:40- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |