pytest初识

一、单元测试框架

(1)什么是单元测试框架?
单元测试是指在软件开发中,针对软件的最小单元(函数、方法)进行正确性的检查测试
(2)单元测试框架
java:junit和testng
python:unittest和pytest
1、测试发现:从多个py文件里找到测试用例
2、测试执行:按照一定的顺序和规则去执行,并生成结果
3、测试判断:通过断言判断预期结果和实际结果的差异
4、测试报告:统计测试进度,耗时,通过率,生成测试报告

二、自动化测试框架是什么?

(1)什么是自动化测试框架
是自动化测试组长针对一个项目开发的一个代码框架,这个框架封装了很多基础模块,报告等。
(2)作用
1、提高测试效率,降低自动化用例的维护成本
2、减少人工干预,提高测试的准确性,增加代码的重用性

三、pytest简介

  1. 是一个非常成熟的单元框架,比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分发(不支持多线程,-n)
  • pytest-ordering 用于改变测试用例的执行顺序
  • pytest-rerunfailures 用例失败后重跑
  • allure-pytest 用于生成美观的测试报告
  • pytest-parallel 支持多进程、多线程执行测试用例。
    –workers (optional) *:多进程运行需要加此参数, *是进程数。默认为1。
    –tests-per-worker (optional) *:多线程运行, *是每个worker运行的最大并发线程数。默认为1
    pytest test.py --workers 2 --tests-per-worker 4:2个进程并行,且每个进程最多4个线程运行。
    即总共最多8个线程运行。
    【特别注意】:
    a. pytest-parallel的workers参数在windows系统下永远是1,在linux和mac下可以取不同值。
    b. pytest-parallel加了多线程处理后,最后执行时间是运行时间最长的线程的时间。
    c. 在windows下想用多进程的选pytst-xdist; 想用多线程的选pytest-parallel
    放到requirements.txt中,通过pip install -r requirements.txt

四、使用Pytest的默认规则

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

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

  1. 主函数模式
    运行所有:pytest.main()
    指定模块:pytest.main([‘-vs’,‘test_login.py’])
    指定目录:pytes.main([‘-vs’,‘./interface_testcase’]])
    通过nodeid指定用例运行:nodeid由模块名、分隔符、类名、方法名、函数名组成
    pytest.main([‘-vs’,‘./test_Demo.py::TestClass::test_two’])
    pytest.main([‘-vs’,‘./test_Demo.py::test_answer’])

  2. 命令模式
    运行所有:pytest
    指定模块:pytest -vs test_login.py
    指定目录:pytest -vs ./interface_testcase/test_interface.py::test_04
    【参数详解】
    -s 表示输出调试信息,包括print打印的信息
    -v 显示更详细的信息
    -vs 这2个参数一起用
    -n 支持多进程或者分布式运行测试用例
    eg.pytest -vs ./testcase/test_login.py -n 2
    –reruns num 失败用例重跑次数
    -x 表示只要有一个用例报错,测试停止
    -k 根据测试用例的部分字符串指定测试用例
    eg.pytest -vs -k "new "
    –workers num 多进程个数
    windows下默认为1
    –tests-per-worker 多线程个数

  3. 通过读取pytest.ini(全局)配置文件运行
    pytest.ini这个文件是pytest单元测试框架中的核心配置文件
    位置:放在项目的根目录下
    编码:必须是ANSI,可以使用notpad++修改编码格式
    作用:改变pytest默认的行为规则
    运行的规则:主函数模式/命令行模式运行都会读取这个配置文件
    在这里插入图片描述

六、Pytest测试用例执行顺序

unittest:按照ascii的大小执行顺序
pytest:默认从上到下执行
需要改变默认的执行顺序:使用mark标记 @pytest.mark.run(order=3) 需要导入pytest_ordering
在这里插入图片描述

七、如何分组测试?

在这里插入图片描述
smoke:冒烟用例,分布在各个模块里面
pytest -m smoke
pytest -m ‘smoke or usermanage’

八、pytest跳过测试用例

无条件跳过:
@pytest.mark.skip(reason=‘跳过不是类的测试用例’)

有条件跳过:
answer = ‘wrong’
@pytest.mark.skipif(answer = ‘wrong’,reason=‘触及变量answer为wrong’)

九、setup/teardown

  1. 模块级 setup_module/teardown_module 开始于模块(.py)始末,生效一次
  2. 函数级 setup_function/teardown_function 对每条函数用例生效(函数没有定义在类中)
  3. 类级 setup_class/teardown_class 只在类中前后运行一次 (在类中)
  4. 方法级 setup_method/teardown_method 开始于方法始末(在类中)
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值