首页 > 其他 > 详细

pytest基础练习

时间:2021-02-20 12:06:58      阅读:27      评论:0      收藏:0      [点我收藏+]

注:关于pytest的基础要点个人已经总结好了,直接git clone即可,gitee:https://gitee.com/teark/pytest_exercise.git

启动:

在main下,pytest.main([‘-q‘,‘test_demo.py‘])
或者在终端,pytest ./test_demo.py
执行多个:pytest test_fixture1.py test_fixture2.py

 

启动参数说明:

-s: 显示程序中的print/logging输出
-v: 丰富信息模式, 输出更详细的用例执行信息
-q: 安静模式, 不输出环境信息,只给结果
-k:关键字匹配,用and区分:匹配范围(文件名、类名、函数名)

 

setup/teardown:

setup和teardown函数:运行在每个测试方法的始末
setup_class和teardown_class函数:运行在类的始末

 

pytest.ini:

参数最好都放配置文件里,不用再main里放
addopts配置pytest命令行运行参数
testpaths配置测试搜索的路径
python_files配置测试搜索的文件名
python_classes配置测试搜索的测试类名
python_functions配置测试搜索的测试函数名
配置文件里不要出现中文,需要gbk编码,但是改了gbk,控制台打印时会报错,无语。

 

pytest-html:

安装它
用法:配置文件里添加报告参数:addopts = -s --html=./report.html,若要生成xml文件改一下就行

 

pytest-ordering:

安装它
用法:函数上面加@pytest.mark.run(order=n)
优先级:order值全为正数或全为负数时, 值越小,优先级越高;正数和负数同时存在,正数优先级高

 

pytest-rerunfailures:

安装它
用法:命令行格式, pytest —reruns n # n为重试的次数;或添加失败重试参数,即:addopts = -s --reruns 2 --html=./report.html
记住命令行是reruns,最好配置参数

 

fixture:

功能:通常会被用于完成预置处理和重复操作。如在测试网站的功能时,每个测试用例都要登录和退出,利用fixture就可以只做一次;完成setup和teardown操作,处理数据库或文件的打开、关闭操作;将数据提前写入数据库或通过params返回给测试用例。强大吧!
pytest.fixture(scope=‘function‘, params=None, autouse=False, ids=None, name=None)
常用参数解释:
"scope": 被标记方法的作用域;
"function": 默认值,表示每个测试方法都要执行一次
"class": 作用于整个类, 表示每个类的所有测试方法只运行一次
"module": 作用于整个模块, 每个module的所有测试方法只运行一次.
"session": 作用于整个session, 每次session只运行一次. ??(此方法慎用!!)
params: list类型,默认None, 接收参数值,对于param里面的每个值,fixture都会去遍历执行一次.
autouse: 是否自动运行,默认为false, 为true时此session中的所有测试函数都会调用fixture
以上的所有参数也可以不传
使用:
把返回值作为参数使用:某个功能函数如before上面放@pytest.fixture(),然后before可以作为参数放在需要用的函数里,选这个没错了。
直接使用:某个功能函数如before上面放@pytest.fixture(),然后需要用的函数或类上面放@pytest.mark.usefixtures("before")

 

skipif:

@pytest.mark.skipif(condition, reason=None)
参数解释:
condition: 跳过的条件,必传参数
reason: 标注原因,必传参数

 

xfail:

@pytest.mark.xfail(condition=None, reason=None, raises=None, run=True, strict=False)
常用参数:
condition:预期失败的条件,必传参数
reason:失败的原因,必传参数

 

parametrize:

@pytest.mark.parametrize(argnames,argvalues)
参数值为N个,测试方法就会运行N次
常用参数:
argnames:参数名
argvalues:
参数对应值,类型必须为list
当参数为一个时,参数格式:[value]
当参数个数大于一个时,格式为:[(param_value1,param_value2.....),(param_value1,param_value2.....)]

运行:
pytest.main("d:/pyse/pytest/") # 指定测试目录
pytest.main("-q test_main.py") # 指定测试文件
pytest.main("-v -s spec_001_modul_test.py::test_001_spec") #运行模块中指定用例
pytest.main("-v -s spec_001_modul_test.py::Test_Class::test_003_spec") #运行类中指定用例
#运行spec_001_modul_test模块中用例名称包含spec的用例
pytest.main("-v -s -k spec spec_001_modul_test.py")
#运行当前文件夹匹配Test_Class的用例,类文件下面的用例
pytest.main(‘-s -v -k Test_Class‘)
pytest 目录/文件::类名::函数名 或者 pytest 目录/文件::函数名

 

其他:

不需要在main里面写pytest.main,只要是符合命名,默认为pytest启动,都会自动调用pytest
如果两个测试函数体里面的内容一样,只会输出一次结果。
改了哪儿,直接运行后测的就是哪儿。需要重新定位鼠标,一般放最后。这条很重要!

pytest基础练习

原文:https://www.cnblogs.com/teark/p/14419893.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!