Pytest入门【1】
一、Pytest单元测试框架
1).什么是单元测试框架?
单元测试是指在软件开发当中,针对软件的最小单位(函数、方法)进行正确性的检查测试。
2).单元测试框架
java:junit和testing
python:unittest和pytest
3).单元测试框架主要做什么?
- 测试发现:从多个文件里面去找到我们的测试用例
- 测试执行:按照一定的顺序和规则去执行,并生成结果
- 测试判断:通过断言判断预期结果和实际结果的差异
- 测试报告:统计测试进度,耗时,通过率,生成测试报告。
二、单元测试框架和自动化测试框架有什么关系?
1).什么是自动化测试框架
2).作用
- 提高测试效率,降低维护成本
- 减少人工干预,提高测试的准确性,增加代码的重用性
- 核心思想是让不懂代码的人也能够通过这个框架去实现自动化测试
3).pytest单元测试框架和自动化测试框架的关系
单元测试框架:只是自动化测试框架中的组成部分之一
pom设计模式:只是自动化测试框架中的组成部分之一
数据驱动
关键字驱动
全局配置文件的封装
日志监控
selenium,requests二次封装
三、Pytest简介
1.pytest是一个非常成熟的python的单元框架,比unittest更灵活,容易上手
2.pytest可以和selenium,requests,appium结合实现web自动化,接口自动化,app自动化
3.pytest可以实现测试用例的跳过以及reruns失败用例重试
4.pytest可以和aillure生成非常美观的测试报告
5.pytest可以和Jenkins持续集成
6.pytest有很多非常强大的插件,并且这些插件能够实现很多的实用的操作。
pytest
pytest-html (生成html格式的自动化测试报告)
pytest-xdist 测试用例分布式执行,多CPU分发
pytest-ordering 用于改变测试用例的执行顺序
pytest-rerunfailures 用于失败后重跑
allure-pytest用于生成美观的测试报告
放到requirements.txt中,通过pip install -r requirements.txt
四、使用pytest,默认的测试用例的规则以及基础应用
1.模块名必须以test_开头或者_test结尾
2.测试类必须以Test开头,并且不能有init方法
3.测试方法必须以test开头
五、pytest测试用例的运行方式
1.主函数模式
(1)运行所有:pytest.main()
(2)指定模块:pytest.main(['-vs','test_login.py'])
(3)指定目录:pytest.main(['-vs','./interface_testcase'])
(4)通过nodeid指定用例运行:nodeid由模块名,分隔符,类型,类名,方法名,函数名组成。
pytest.main(['-vs','./interface_testcase/test_interface.py::test_04_func'])
2.命令行模式
(1)运行所有:pytest
(2)指定模块:pytest -vs test_login.py
(3)指定目录: pytest main(['-vs','./interface_testcase'])
参数详解:
-s:表示输出调试信息,包括print打印的信息
-v:显示更详细的信息
-vs:这两个参数一起用
-n:支持多线程或者分布式运行测试用例
如:pytest -vs./testcase/test_login.py -n 2
--reruns NUM:失败用例重跑
-x:表示只要有一个用例报错,那么测试停止
--maxfail=2 出现两个用例失败就停止
-k:根据测试用例的部分字符串指定测试用例
如:pytest -vs ./testcase -k "ao"
3.通过读取pytest.ini配置文件运行
pytest.ini这个文件它是pytest单元测试框架的核心配置文件
1.位置:一般放在项目的根目录
2.编码:必须是ANSI,可以使用notpad++修改编码格式
3.作用:改变pytest默认的行为
4.运行的规则:不管是主函数的模式运行,命令行模式运行,都会去读取这个配置文件
[pytest] addopts=-vs #命令行的参数,用空格分隔 testpaths=../testcase #测试用例的路径 python_files=test_*.py #模块名的规则 python_classess=Test* #类名的规则 python_functions=test #方法名的规则
六、pytest执行测试用例的顺序是怎样的?
unittest:ascII的大小来决定执行的顺序
pytest:默认从上到下
改变默认的执行顺序:使用mark标记
@pytest.mark.run(order=3)
七、如何分组执行(冒烟,分模块执行,分接口和web执行)
smoke:冒烟用例,分布在各个模块里面
pytest -vs -m "smoke"
pytest -vs -m "smoke or usermanage or productmanage"
八、pytest跳过测试用例
(1)无条件跳过
@pytest.mark.skip(reason="微微太漂亮")
(2)有条件跳过
@pytest.mark.skipif(age>=18,reason='已成年')
Pytest入门【1】相关推荐
- pytest入门学习(2)
pytest的hello world pyt1.py def func(x):print (x+1);return x+1;def test_answer():assert func(3) == 5; ...
- Pytest入门【2】
一.setup/teardown.setup_class/teardown_class所有 为什么需要这些功能? 比如:web自动化执行用例之前,请问需要打开浏览器吗?用例执行后需要关闭浏览器? cl ...
- pytest入门_测试用例分类_@pytest.mark.smoke
1.测试用例分类 1.有时候我们只需执行部分测试用例,比如从用例集当中挑选 smoke 测试,要怎么做呢? 2.通过装饰器 @pytest.mark.smoke,smoke 是可以自定义的,运行时加上 ...
- 不夸张地说,这是我见过最通俗易懂的,pytest入门基础教程
Pytest简介 Pytest is a mature full-featured Python testing tool that helps you write better programs.T ...
- 软件测试入门全流程精华总结【必看 知识点很全】
软件测试基础 软件测试的概念 通过一系列手段去证明软件是符合用户需求的,满足质量要求的.预期结果和实际结果的一个对比. 软件测试分类 按方法分:黑盒测试.白盒测试.灰盒测试 黑盒测试:把软件比作一个& ...
- 【单元测试】pytest:配置|断言|参数化|夹具|装饰器|插件
[单元测试]pytest 入门案例 pytest配置文件 断言 参数化 夹具 模块级 类级 方法级 函数级 fixture装饰器 插件 unittest:python自带的单元测试框架,兼容性好 py ...
- 《pytest 测试实战》读书笔记1
文章目录 第 1 章 pytest 入门 1.1 安装 pytest 1.2 运行 pytest 1.3 运行单个测试用例 1.4 使用命令行选项 1.5 练习 第 1 章 pytest 入门 首先来 ...
- 自动化测试python 成长路线_自动化测试工程师成长路线规划
随着互联网产品功能的迭代更新,对软件质量和数据安全也逐渐提出了更高的要求.因此,测试在目前的地位和功能可以说是越来越不可或缺了.虽然目前的就业市场继续大量的测试人才,但是低端的测试人员还是比较饱和的. ...
- 移动端自动化测试实战(四)
说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家! 接着上一篇博客继续往下写 :https://blog.csdn.net/qq_41782425/article/details/1 ...
最新文章
- DL之CNN:利用CNN算法实现对句子分类+进行情感分析(预测句子情感)
- positionnbsp;absolutenbsp;relativenbsp;z-index
- uva 11012——Cosmic Cabbages
- HDU - 2102 A计划(双层BFS)
- Spring使用ajax异步上传文件
- nginx——ngx_http_gzip_module
- 一个比较好的多人网络游戏菜单程序。
- 给FCKeditor添加自定义按钮的方法
- 微软官方 Windows 10 更新安装失败的解决办法
- 电脑能登录微信,但不能上网
- 破解庞加莱猜想--中国人干的!
- 一首记忆深刻的诗:《昭君出塞》
- Ubuntu 18.04下为Firefox浏览器安装flash插件
- 小码哥教育java多少钱_小码哥教育java从0到高级架构师
- 新旧版MATLAB中的希尔伯特-黄变换(HHT)及其边际谱的求取问题
- 物联网(IoT)行业的决策管理应用
- (doc, docx)文档合并的三种方法
- 牛客 小米校招 计算题 单调栈 接雨水
- 亚马逊风控从哪些方面检测的?
- 用C语言做一个迷宫小游戏
热门文章
- navicat for mysql 连接时报错:1251-Client does not support authentication protocol requested by server
- Redis内存使用优化与存储
- 计算密集型服务 性能优化实战始末
- 面向在线教育业务的流媒体分发演进
- ​“免疫杀手” Deep X-RAY
- 【招募】腾讯技术开放日·5G多媒体专场
- 除了游戏和医疗,腾讯区块链还准备做什么?
- SecureCRT:保存输出日志的方法
- termcap - 终端功能数据库详解
- undefined: resolver.BuildOption undefined: resolver.ResolveNowOption 报错的解决办法