| |
|
开发:
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 |
1、安装pytest 版本pip3 install pytest==4.0.2 2、pytest的用例编写规则
3、为什么使用pytest:可以通过命令行来对测试用例进行控制举例:test_a.py 执行1:pytest??#会执行所有test_ 开头的文件 ?执行2:pytest -v -s? ?# -v显示运行的函数,-s运行显示内部的打印信息 ?执行3:pytest -v -s test_a.py ? ?执行4:?pytest -k case2? #case2 是关键字,筛选测试文件、测试类名、测试方法中包含关键字的,均可被执行 ?执行5:pytest?test_a.py::test_case1?-s?-v? ?#执行指定的测试方法 4、执行某个测试方法代码举例: ? 执行1:pytest?test_c.py::TestCalc::test_mul?-s?-v? #执行指定的函数 执行2:pytest?test_c.py::TestCalc?-s?-v? #执行指定的类 执行3:pytest test_c.py::TestCalc -s -v --reruns 3? #3表示重跑3次 ?5、生成pytest测试报告
6、setup 和 teardown 函数import pytest class Test_ST(): def setup(self): print("------setup------") def teardown(self): print("------teardown------") def test_001(self): assert True def test_002(self): assert False 7、确定执行顺序1)安装包: pip install pytest-ordering 2)使用?@pytest.mark.run(order=x) 标记被测试函数 3)运行的顺序由order传入的参数决定,order从小到大的顺序执行 ? ? ?8、@pytest.fixturepytest中加入fixture装饰器来标记固定的工厂函数,使测试能够可靠、重复地执行,fixture函数可以在测试执行前和执行后进行必要的准备和清理工作,和unitest测试框架中的setup、teardown类似。但是pytest fixture和传统风格的setuo/teardown函数相比,有了巨大的改进: 1)fixture具有明确的名称,并且通过在测试函数、模块、类或整个项目中申明它们的使用来激活。 2)fixture是以模块化的方式实现的,因为每个fixture名称都会触发fixture函数,其本身也可以使用其他fixture、 3)fixture管理从简单的单元扩展到复制的函数测试,允许根据配置和组件选项参数化fixture和测试,或者在函数、类、模块或整个测试会话范围内重复使用fixture。 fixture(scope='function',params=None,autouse=False,ids=None,name=None): scope:被标记方法的作用域,有四个级别参数 "function"(默认),作用于每个测试方法,每个test都运行一次 "class",作用于整个类,每个class的所有test只运行一次 "module",作用于每个模块,每个module的所有test只运行一次 "session",作用于整个session,每个session只运行一次 params:(list类型)提供参数数据,供调用标记方法的函数使用。 autouse:如果True,则为所有测试激活fixture func可以看到它。如果为False则显示需要参考来激活fixture。 ids:每个字符串id的列表,每个字符串对应于params这样他们就是测试ID的一部分。如果没有提供ID它们将从params自动生成 name:fixture的名称。这默认为装饰函数的名称。如果fixture在定义它的统一模块中使用,夹具的功能名称将被请求夹具的功能arg遮蔽,解决这个问题的一种方法时将装饰函数命令"fixture_<fixturename>"然后使用"@pytest.fixture(name='<fixturename>')"。 使用场景:
9、@pytest.mark使用方法举例:@pytest.mark.skipif(condition,reason=None) 参数: ???????? condition:跳过的条件,True(跳过、不执行)/False(不跳过、执行),必传参数 ???????? reason:标注原因 作用: 1)跳过测试函数:@pytest.mark.skipif(2>1,reason="故意的") 2)标记函数为失败函数:@pytest.mark.xfail(True,reason="故意的") 3)传参(要传参数的名称,且和参数化中定义的一致): 单个参数:@pytest.mark.parametrize('name', ["tom", "lisa", "lucy"])?? 多个参数:@pytest.mark.parametrize("username,password",[('wang','wang123'),('li','li23'),('zhao','zhao123')]) 在我这10几年软件测试生涯中,整理的一些技术资料,包括:电子书,简历模块,各种工作模板,面试宝典,自学项目等。免费领取资料或在学习或工作中遇到问题都可以扫下图的码,添加需备注【666】 ? |
|
开发测试 最新文章 |
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:51:14- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |