栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

pytest基础知识点汇总

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

pytest基础知识点汇总

一、pytest 默认约定:
(1)pytest将在当前目录及其子目录中运行所有格式为test_*.py和*_test.py的文件
    如果发现只执行当前文件,可能是设置问题:
    file---setting---tools---python integrated tools---test---default test runner中设置为unittests即可
(2)测试方法|函数必须是test开头
(3)测试类必须是Test开头
(4)assert 直接添加至测试用例后面,失败测试结果是F,成功就是.
(5)pytest测试类中一定不能有构造方法__init__(self):,pytest不允许使用构造方法
二、pytest常见应用汇总: 1、断言机制 pytest的断言就是应用python的运算符号和assert关键字来实现
测试相等: ==
测试不相等: !=
测试大于等于: >=
测试小于等于: <=
测试包含: in
测试不包含: not in
测试是否为True: is True
测试是否不为True: is not True / is False
2、常用运行参数
(1)-s 用于关闭捕捉,从而输出打印信息,
    如果没有-s而是输入pytest.main(['--html=./report.html'])则会将测试结果输出到html文件中
    如果有了-s 则不会输出到html,而是输出到终端
    注:前提是安装pytest-html插件 pip install pytest-html
(2)-v 用于显示具体的信息
(3)-k 用于执行用例名称中包含某字符段的用例,比如pytest(['-k','abc'])执行测试用例名称中包含abc字符的用例
(4)-q 简化输出信息 输出结果就是简单的F和.(F代表用例失败,.代表用例成功通过)
(5)-x 一旦出现测试用例失败,后面的用例就不执行
(6)精准选择执行的用例 pytest.main(['-s',"文件名.py::用例名称"])
(7)生成JUnit XML测试报告  pytest.main(['--junit-xml=./report/junit_report.xml'])
(8)设置失败两次就结束所有测试 pytest.main(['--maxfail=2'])
(9)通过标记表达式来选择执行的测试用例
    1)首先写一个测试配置文件.ini文件,格式大概是
    [pytest]
    markers =
        标签名: 描述信息
        slow: mark tests as slow
        smoke: mark tests as smoke            
    2)在测试用例添加标记装饰器@pytest.mark.slow(slow是标签名)
    3)main函数写作:pytest.main(['-m', 'slow'])
(10)多进程运行用例:运行失败
    1)安装插件 pip install pytest-xdist
    2)运行模式 pytest -n NUMCPUS,pytest.main(['-n', '2'])

(11)失败用例重新运行
    1)安装插件 pip install pytest-rerunfailures,是一个可以使pytest 重新运行的插件,消除间歇性故障
    2)pytest.main(['reruns', '3', '--reruns-delay', '2', 'test*.py'])
       失败用例重新运行 '3'是重新运行次数,--reruns-delay 设置重跑延迟时间 '2'就是延迟时间 最后是运行测试文件
        
(12)setUp和tearDown
    1)测试用例中没有类时
    第一批次:setup_module和teardown_module 在当前文件中在所有测试用例执行之前和之后执行
    第二批次:setup_function和teardown_function 在每个测试函数之前和之后执行
    第三批次:setup和teardown 在每个测试函数之前和之后执行,这个可以作用于类方法
    PS:执行顺序按照批次顺序来,即使更改方法位置,执行顺序不变
    2)测试用例中有类时
    第一批次:setup_class和teardown_class 在当前文件中在所有测试用例执行之前和之后执行,必须有@classmethod装饰器
    第二批次:setup_method和teardown_method 在每个测试函数之前和之后执行
    第三批次:setup和teardown 在每个测试函数之前和之后执行,这个可以作用于类方法
    
(13)pytest配置文件 可以在配置文件中设置默认参数,还有执行文件,执行类名,执行测试方法名等
    1)配置文件大概格式
    [pytest]
    # 01 命令行参数默认加到执行过程中
    addopts = -s -v --html=./report/html_report.html
    # 02 指定要运行的测试目录
    testpath = ./scripts
    # 03 指定要运行的文件规则
    python_files = auto*.py
    # 04 指定要运行的类的名称规则
    python_classes = Auto* B*
    # 05 指定要运行的测试方法的名称规则
    python_functions = auto_*
    
(14)pytest插件 pytest-html插件
    1)安装 pip install pytest-html
    2)--html=用户路径/html_report.html
    ps:生成报告的同时还有一个asset的css文件
    
(15)pytest获取用例执行性能数据以及pytest禁用插件
    查看最慢的10个用例 pytest --durations=10 
    关闭插件,比如关闭doctest pytest -p no:doctest
3、pytest跳过用例机制
1.有条件跳过测试函数 根据特定的条件,跳过某些测试函数. 
方法:
	skipif(condition, reason=None) 
参数:
	condition:跳过的条件,必传参数 
	reason:标注原因,必传参数 
使用方法: 
	@pytest.mark.skipif(condition, reason="xxx")装饰测试用例 
2.无条件跳过测试函数
 @pytest.mark.skip(reason="no reason") 可传入一个非必须参数reason表示原因
4、pytest函数数据参数化
(1)单个数据参数化
@pytest.mark.parametrize(argnames,argvalues)
有多少个values就会执行多少次用例
@pytest.mark.parametrize('a', ['aaa', 'bbb', 'ccc'])
a 是形参,后面aaa,bbb,ccc是实参
(2)多个数据参数化
@pytest.mark.parametrize('user, password', [('xuzhu', '123456'), ('zhanzhao', '123456'), ('simple', '123456')])
user和password是形参,中括号里的实参
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/753236.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号