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, appius 结台实现 web 目动化,接口目动化,ap 目动化。

3 pytest 可以实现测试用例的跳过以及 reruns 失败用例重试

4 pytest 可以和 allure 生成非常美观的测试报告

5 pytest 可以和 Jenkins 持续集成

6 pytest 有很多非常强大的插件,并且这些插件能够实现很多的实用的操作

pytest

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

pytest-xdist 测试用例分布式执行,多CPU分发

pytest-ordering 用与改变测试用例多执行顺序

pytest-rerunfailures 用例失败后重跑

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

一次性安装所有插件方案:

新建一个txt文档,把插件名放进txt中,每个插件后空一行,执行命令pip install -r 文件名.txt

升级安装pip install -U xxx

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

1 模块名必须以 test_ 开头或音 _test 结尾

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

3 测式方法必须以 test 开头

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

1 主函数模式

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

​ (2)指定模块:pytest.main(‘test_login.py’)

​ (3)指定目录:pytest.main(‘路径名’)

​ (4)通过nodeid指定用例运行:nodeid由模块名,分隔符,类名,方法名,函数名组成。

​ pytest.main([‘./testcase/test_login::TestLogin::test_01_baili’])

2 命令行模式

​ (1)运行所有:直接输入pytest

​ (2)指定模块:pytest test_login.py

​ (3)指定目录:pytest 路径名

​ (4)指定用例:pytes ./testcase/test_login::TestLogin::test_01_baili

参数详解:

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

-v:显示更详细的信息

-n:支持多线程或者分布式运行测试用例,节省时间

如: pytest -vs testcase -n 2

​ pytest.main([‘-vs’,’-n=2′])

–reruns:用例失败了才重新跑n次

如: pytest -vs testcase –reruns 2

​ pytest.main([‘testcase’,’–reruns=2′])

-x:只要有一个用例报错,测试停止

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

如:pytest -vs testcase -k “ao”

–html ./目录/文件.html:生成html测试报告

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

1.位置放在项目的根目录

2.编码:必须是ANSI,可以使用工具notpad++修改编码格式

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

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

[pytest]
addopts = -vs
#命令行的参数,用空格分隔
testpaths = Pytest
#测试用例的路径
python_files = test_*.py
#模块名的规则
python_classes = Test*
#类名的规则
python_functions = test
#方法名的规则

六、pytest执行测试用例的顺序

unittest按照ascII码的大小来决定执行顺序

pytest默认从上到下

  • 改变默认的执行顺序,使用mark标记。
@pytest.mark.run(order=3)

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

在功能上加上装饰器:

@pytest.mark.smoke
@pytest.mark.usermanage

在pytest.ini中添加:

markers =
    smoke:冒烟用例
    usermanage:用户管理模块

pytest -m “smoke”

pytest -m “smoke or usermanage”

八、pytest跳过测试用例

(1) 无条件跳过

@pytest.mark.skip("原因")

(2)有条件跳过

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

B站视频总结,原视频为码尚学院3.3发布的pytest自动化测试框架

Original: https://blog.csdn.net/qq_49295234/article/details/115472761
Author: 缘来于此
Title: pytest(1)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/775880/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球