Pytest单元测试框架从入门到精通(一)

一.pytest单元测试框架

1.什么是单元测试框架

单元测试是指在软件开发当中,针对软件的最小单位(函数,方法)进行正确性的检查测试。

2.单元测试框架

java:junit和testng
python:unittest和pytest

3.单元测试框架主要做什么?

  • 测试发现:从多个文件里面去找到我们的测试用例
  • 测试执行:按照一定的顺序和规则去执行,并且生成结果
  • 测试判断:通过断言判断预期结果和实际结果的差异
  • 测试报告:统计测试进度,耗时,通过率,生成测试报告

二.单元测试框架和自动化测试框架有什么关系?

1.什么是自动化测试框架

封装自动化基础模块 管理模块 统计模块等来进行一个指定系统的自动化测试。

2.作用

  1. 提高测试效率,降低维护成本
  2. 减少人工干预,提高测试的准确性,增加代码的重用性
  3. 核心思想是让不懂代码的人也能够通过这个框架去实现自动化测试

3.pytest单元测试框架和自动化测试框架的关系

单元测试框架:只是自动化测试框架中的组成部分之一
还包含:

  • pom设计模式
  • 数据驱动
  • 关键字驱动
  • 全局配置文件的封装
  • 日志监控
  • selenium,requests的二次封装
  • 断言
  • 报告邮件等

三.pytest简介

特征

1.pytest是一个非常成熟的python的单元框架,比unittest更灵活。
2.pytest可以和selenium,requests,appium结合实现web自动化,接口自动化,app自动化。
3.pytest可以实现测试用例的跳过以及reruns(失败用例重试)。
4.pytest可以和allure生成非常美观的测试报告。
5.pytest可以和Jenkins持续集成
6.pytest有很多非常强大的插件,并且这些插件能够实现很多的实用的操作。
例如:

  • pytest
  • pytest-html(生成HTML格式的自动化测试报告)
  • pytest-xdist(测试用例分布式执行,多CPU分发)
  • pytest-ordering(用于改变测试用例的执行顺序)
  • pytest-rerunfailures(用例失败后重跑)
  • allure-pytest(生成美观的测试报告)
如何快速的安装插件i
  1. 新建一个文本文档,将插件名称写进去

Pytest单元测试框架从入门到精通(一)_第1张图片

  1. 点击右下方的Terminal,并输入
pip install -r requirements.txt

出现
在这里插入图片描述
说明安装完成

四.使用pytest,默认的测试用例的规则以及基础应用

1.模块名必须以test_开头或者_test结尾。
2.测试类必须以Test开头,并且不能有init方法。
3.测试方法必须以test开头。

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

1.主函数模式

运行所有函数
pytest.main
运行指定函数
pytest.main(['-vs','test_login.py'])
运行指定目录
pytest.main(['-vs','./interface_testcase'])
通过nodeid指定用例运行:nodeid由模块名,分隔符,类名,方法名,函数名组成。
pytest.main(['-vs','./interface_testcase/test_interface.py::test_04_func'])
pytest.main(['-vs','./interface_testcase/test_interface.py::TestInterface::test_03_jiekou'])Pytest单元测试框架从入门到精通(一)_第2张图片

2.命令行模式

运行所有函数
pytest
运行指定模块
pytest -vs test_login.py
运行指定目录
pytest -vs ./interface_testcase
Pytest单元测试框架从入门到精通(一)_第3张图片
参数详解:
-s:表示输出调试信息,包括print打印的信息
-v:显示更相信的信息
-vs:两个参数一起用
-n:支持多线程或者分布式运行测试用例
如:

pytest.main(['-vs','./testcase','-n=2'])
pytest -vs -testcase/test——login.py -n 2 

–reruns NUM:失败用例重跑
-x:只要有一个用例报错,测试停止
–maxfail NUM :用例失败NUM次就停止
-k:根据测试用例的部分字符串指定测试用例
-html ./report/report.html:生成测试报告

3.通过读取pytest.in配置文件运行

pytest.ini这个文件他是pytest单元测试框架的核心配置文件

  1. 位置:一般放在项目的根目录
  2. 编码:必须是ANSI,可以使用notpad++修改编码格式。
  3. 作用:改变pytest的默认行为
  4. 运行的规则:不管是主函数的模式运行,命令行模式运行,都会去读取这个配置文件
[pytest]
addopts = -vs					#命令行的参数,用空格分隔
testpaths = ./testcase          #测试用例的路径
python_ files = test_*.py       #模块名的规则
python_classes = Test*			#类名的规则
python_functions = test			#方法名的规则

六.pytest执行测试用例的顺序是怎样的呢?

unittest:ascll的大小来决定的执行的顺序
pytest:默 认从上到下

改变默认的执行顺序:使用mark标记。

@pytest.mark.run(order=1)

七.如何分组执行(冒烟,分模块,分接口和web执行)

smoke:冒烟用例,分布在各个模块里面

pytest  -m“smoke”			      #执行smoke
pytest  -m“smoke or usermanage”   #执行smoke和usermanage模块

八.跳过测试用例

1.无条件跳过

@pytest.mark.skip(reason="无条件“)

2.有条件跳过

 @pytest.mark.skipif(age>=18,reason="已成年")

你可能感兴趣的:(python,单元测试)