一、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】相关推荐

  1. pytest入门学习(2)

    pytest的hello world pyt1.py def func(x):print (x+1);return x+1;def test_answer():assert func(3) == 5; ...

  2. Pytest入门【2】

    一.setup/teardown.setup_class/teardown_class所有 为什么需要这些功能? 比如:web自动化执行用例之前,请问需要打开浏览器吗?用例执行后需要关闭浏览器? cl ...

  3. pytest入门_测试用例分类_@pytest.mark.smoke

    1.测试用例分类 1.有时候我们只需执行部分测试用例,比如从用例集当中挑选 smoke 测试,要怎么做呢? 2.通过装饰器 @pytest.mark.smoke,smoke 是可以自定义的,运行时加上 ...

  4. 不夸张地说,这是我见过最通俗易懂的,pytest入门基础教程

    Pytest简介 Pytest is a mature full-featured Python testing tool that helps you write better programs.T ...

  5. 软件测试入门全流程精华总结【必看 知识点很全】

    软件测试基础 软件测试的概念 通过一系列手段去证明软件是符合用户需求的,满足质量要求的.预期结果和实际结果的一个对比. 软件测试分类 按方法分:黑盒测试.白盒测试.灰盒测试 黑盒测试:把软件比作一个& ...

  6. 【单元测试】pytest:配置|断言|参数化|夹具|装饰器|插件

    [单元测试]pytest 入门案例 pytest配置文件 断言 参数化 夹具 模块级 类级 方法级 函数级 fixture装饰器 插件 unittest:python自带的单元测试框架,兼容性好 py ...

  7. 《pytest 测试实战》读书笔记1

    文章目录 第 1 章 pytest 入门 1.1 安装 pytest 1.2 运行 pytest 1.3 运行单个测试用例 1.4 使用命令行选项 1.5 练习 第 1 章 pytest 入门 首先来 ...

  8. 自动化测试python 成长路线_自动化测试工程师成长路线规划

    随着互联网产品功能的迭代更新,对软件质量和数据安全也逐渐提出了更高的要求.因此,测试在目前的地位和功能可以说是越来越不可或缺了.虽然目前的就业市场继续大量的测试人才,但是低端的测试人员还是比较饱和的. ...

  9. 移动端自动化测试实战(四)

    说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家! 接着上一篇博客继续往下写 :https://blog.csdn.net/qq_41782425/article/details/1 ...

最新文章

  1. DL之CNN:利用CNN算法实现对句子分类+进行情感分析(预测句子情感)
  2. positionnbsp;absolutenbsp;relativenbsp;z-index
  3. uva 11012——Cosmic Cabbages
  4. HDU - 2102 A计划(双层BFS)
  5. Spring使用ajax异步上传文件
  6. nginx——ngx_http_gzip_module
  7. 一个比较好的多人网络游戏菜单程序。
  8. 给FCKeditor添加自定义按钮的方法
  9. 微软官方 Windows 10 更新安装失败的解决办法
  10. 电脑能登录微信,但不能上网
  11. 破解庞加莱猜想--中国人干的!
  12. 一首记忆深刻的诗:《昭君出塞》
  13. Ubuntu 18.04下为Firefox浏览器安装flash插件
  14. 小码哥教育java多少钱_小码哥教育java从0到高级架构师
  15. 新旧版MATLAB中的希尔伯特-黄变换(HHT)及其边际谱的求取问题
  16. 物联网(IoT)行业的决策管理应用
  17. (doc, docx)文档合并的三种方法
  18. 牛客 小米校招 计算题 单调栈 接雨水
  19. 亚马逊风控从哪些方面检测的?
  20. 用C语言做一个迷宫小游戏

热门文章

  1. navicat for mysql 连接时报错:1251-Client does not support authentication protocol requested by server
  2. Redis内存使用优化与存储
  3. 计算密集型服务 性能优化实战始末
  4. 面向在线教育业务的流媒体分发演进
  5. ​“免疫杀手” Deep X-RAY
  6. 【招募】腾讯技术开放日·5G多媒体专场
  7. 除了游戏和医疗,腾讯区块链还准备做什么?
  8. SecureCRT:保存输出日志的方法
  9. termcap - 终端功能数据库详解
  10. undefined: resolver.BuildOption undefined: resolver.ResolveNowOption 报错的解决办法