妈妈带你学 pytest单元测试框架 第一天

一、pytest单元测试框架

1)什么是单元测试框架

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

2)单元测试框架

​ java:junit和testng

​ Python:unittest和pytest

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

​ 1.测试发现:从多个文件里面找到我们测试用例

​ 2.测试执行:按照一定的顺序和规则去执行。并生成结果

​ 3.测试判断:通过断言判断预期结果和实际结果的差异

​ 4.测试报告:统计测试进度,耗时,通过率,生成测试报告

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

​ 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-xdist(测试用例分布式执行。多CPU分发)

​ pytest-ordering(用于改变测试用例的执行顺序)

​ pytest-rerunfailures(用例失败后重跑)

​ pytest-html(生成html格式的自动化测试报告)

​ allure-pytest(用于生成美观的测试报告)

​ 都放到一个文件里面,通过pip install -r 文件名 安装

​ 验证是否安装成功:pytest --version

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

​ 1.模块名必须以test_开头或者__test结尾

​ 2.测试类必须以Test开头,并且不能有init方法

​ 3.测试方法必须以test开头

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

​ 1.主函数模式

​ 1)运行所有用例:pytest.main()

​ 2)指定模块名字运行:pytest.main([’-s’,‘文件名.py’])

​ 2.命令行模式

​ 1) 运行所有 pytest

​ 2)指定模块名字运行:pytest -vs 文件名.py

​ 3)指定目录去执行:pytest.main([’-s’,’./目录名字’])

​ 4) 指定目录去执行:pytest.main([’-vs’,’./testcase’,’-n=2’])

参数详解:

​ -s:表示输出调试信息,包括print打印的信息

​ -v:显示更详细的信息

-vs:这两个参数可以一起使用

-n:支持多线程或者分布式运行测试用例。

如:pytest -vs ./目录名字/文件名字 -n 2

--retuns NUM:表示失败用例重跑

-x:表示只要有一个用例报错,那么测试停止。

​ --maxfail=2:表示出现两个用例失败就停止

​ -k:表示根据测试用例的部分字符串指定测试用例

​ 如:pytest -vs ./目录名字 -k “ao” # “ao”表示包含字符串的才会执行。

​ --html ./report/xxx.html:生成html测试报告

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

​ pytest.ini 这个文件pytest单元测试框架的核心文件。

​ 1)位置一般放在项目的根目录

​ 2)编码格式:必须是ANSI,可以使用notpad++修改编码格式

​ 3)作用:改变pytest默认的行为

​ 4)运行的规则:不管是主函数的模式运行,命令行模式运行,都会去读取这个配置文件。

​ 5)pytest.ini 文件参数

		[pytest]
		# 命令行参数,用空格分隔
		addopts = -vs
		# 测试用例文件夹路径,可自己配置
		testpaths = ./testcase
		# 配置测试搜索的模块文件名称  模块名的规则
        python_files = test_*py
        # 配置测试搜索的测试类名
        python_classes = Test*
        # 配置测试搜索的测试函数名
        python_functions = test
        # 标记用例,在多个文件里面分组执行
        markers =
            smoke:冒烟用例
            usermanage:用户管理模块
            productmanage:商品管理模块

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

​ unittest:ascll的大小来绝对的执行的顺序

​ pytest:默认从上到下执行

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

​ @pytest.mark.run(order=2)

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

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

​ 执行方法:1)pytest -vs -m “smoke”

​ 可以加或者or:2)pytest -vs -m “smoke or usermanage”

八、pytest跳过测试用例

​ 1)无条件跳过 定义装饰器

​ @pytest.mark.skip(reason=‘可以定义原因’) # 跳过,不执行

​ 2)有条件跳过 定义装饰器

​ @pytest.mark.skipif(age>=18,reason=‘年龄大于18成年了’) # 有条件跳过,age==条件

上一篇:Python测试框架pytest(02)PyCharm设置运行pytest、pytest.main()


下一篇:Mac SIP系统完整性保护如何关闭