![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
pytest
公子清羽
这个作者很懒,什么都没留下…
展开
-
钩子函数收集测试结果
def pytest_terminal_summary(terminalreporter, exitstatus, config): '''收集测试结果''' # print(terminalreporter.stats) print("total:", terminalreporter._numcollected) print('passed:', len([i for i in terminalreporter.stats.get('passed', []) if i.w原创 2021-06-24 11:20:50 · 127 阅读 · 0 评论 -
pytest运行上次失败的用例
--lf, (--last-failed) 只重新运行上次运行失败的用例(或如果没有失败的话会全部跑) --ff, (--failed-first) 运行所有测试,但首先运行上次运行失败的测试 --lf是--last-failed的缩写,--ff是--failed-first的缩写if __name__ == "__main__": #pytest.main(["-s", "-v", "test_01.py", "--lf"]) pytest.main(["-s", "-v".原创 2021-01-21 10:07:45 · 673 阅读 · 0 评论 -
定义测试固件fixture后,如何调用fixture传参
fixture作为参数传入定义测试固件fixture就是在函数上加个装饰器@pytest.fixture(),fixture命名不要用test_开头,跟用例区分开。用例才是test_开头的命名。fixture是可以有返回值的,如果没return默认返回None。用例调用fixture的返回值,直接就是把fixture装饰的函数名称当成变量名称,如下案例import pytest@pytest.fixture()def user(): print("获取用户名") a =.原创 2021-01-20 18:11:39 · 780 阅读 · 0 评论 -
pytest之pytest.ini配置文件
pytest配置文件可以改变pytest的运行方式,它是一个固定的文件pytest.ini文件,读取配置信息,按指定的方式去运行。ini配置文件pytest里面有些文件是非test文件pytest.ini pytest的主配置文件,可以改变pytest的默认行为,名称固定不能改,放在项目根目录下。conftest.py 测试用例的一些fixture配置_init_.py 识别该文件夹为python的package包tox.ini 与pytest.ini类似,用tox工具时候才有用setu原创 2021-01-20 17:05:02 · 630 阅读 · 0 评论 -
pytest里面用xfail标记用例为预期失败的用例,报告详情不会报错
当用例a失败的时候,如果用例b和用例c都是依赖于第一个用例a的结果,那可以直接跳过用例b和c的测试,直接给他标记失败xfail用到的场景,登录是第一个用例,登录之后的操作b是第二个用例,登录之后操作c是第三个用例,很明显三个用例都会走到登录。如果登录都失败了,那后面2个用例就没测试必要了,直接跳过,并且标记为失败用例,这样可以节省用例时间。import pytest'''从结果可以看出用例1失败了,用例2和3没执行,直接标记为xfail了'''canshu = [{"user": .原创 2021-01-19 17:54:56 · 327 阅读 · 1 评论 -
@pytest.mark.parametrize的参数化结合@pytest.fixture测试固件的参数化的使用
fixture参数详解#fixture(scope="function", params=None, autouse=False, ids=None, name=None):#使用装饰器@pytest.fixture()的name参数,指定测试固件(被装饰的函数)的新名字。#通过装饰器@pytest.fixture()的参数params,实现测试固件的参数化。#可以通过装饰器@pytest.fixture()的参数ids,设置测试用例的id。#通过装饰器@pytest.fixt...原创 2021-01-13 16:08:00 · 934 阅读 · 0 评论 -
pytest之结合airtest生成allure和airtest报告
定制报告场景:希望在报告中看到测试功能,子功能,测试步骤, 用例描述,错误截图解决: @Feature,story,step,description步骤:1. Import allure2.功能上加@allure.feature('功能名称')3.子功能上加@allure.story('子功能名称')4.步骤上加@allure.step('步骤细节')5.用例描述@allure.description ('提供描述字符串的装饰器')或'''测试用例描述'''6.错误截图a原创 2021-01-12 16:29:13 · 1285 阅读 · 0 评论 -
pytest之allure-pytest生成报告
allure-pytest 环境准备mac环境相关:python 3.7版本pytest 6.1.2版本allure-pytest 2.8.29 最新版首先如果你没有安装 pytest 库的话,先使用 pip 安装一下:pip3 install pytest另外还需要安装 pytest 支持 allure 报告的插件库:pip3 install allure-pytest接下来在运行测试时,使用 pytest 命令运行:pytest <测试目录&..原创 2020-12-25 01:01:00 · 430 阅读 · 2 评论 -
pytest.mark.parametrize的参数化使用
@pytest.mark.parametrize("参数名",列表数据)defparametrize(self,argnames, argvalues, indirect=False, ids=None, scope=None):ids含义:用例的ID格式:传一个字符串列表作用:可以标识每一个测试用例,自定义测试数据结果的显示,为了增加可读性强调:ids的长度需要与测试数据列表的长度一致indirect作用:如果设置成True,则把传进来的参数当函数执行,而不是一个参数..原创 2020-12-21 18:41:01 · 1897 阅读 · 1 评论 -
pytest中pytest-html生成html报告
先安装pip install pytest-html指定报告路径1.直接执行"pytest --html=report.html"生成的报告会在当前脚本的同一路径,如果想指定报告的存放位置,放到当前脚本的同一目录下的report文件夹里pytest --html=./report/report.htmlMicrosoft Windows [版本 6.1.7601]版权所有 (c) 2009 Microsoft Corporation。保留所有权利。C:\Users\Admini.原创 2020-10-19 22:36:39 · 3906 阅读 · 0 评论 -
fixture参数scope=“module“时,module在第一个调用测试固件的函数前面执行一次
fixture参数scope="module",module作用是整个.py文件都会生效,用例调用时,参数写上函数名称就行。import pytest@pytest.fixture(scope="module")def open(): print("打开浏览器,并且打开百度首页") yield print("执行teardown!") print("最后关闭浏览器")def test_s1(open): print("用例1:搜索python-1")原创 2020-10-17 20:58:37 · 572 阅读 · 0 评论 -
pytest使用yield关键字实现teardown_xxx的功能和request.addfinalizer()注册清理函数
上一篇讲到fixture通过scope参数控制前置setup的范围,既然有setup作为用例之前前的操作,用例执行完之后那肯定也有teardown操作。使用fixture的teardown操作并不需要独立的函数,用yield关键字可实现teardown操作#使用yield关键字实现teardown_xxx的功能import pytest # 此时,login函数是一个测试固件,相当于实现了setup_xxx&teardown_xxx的功能。@pytest.fixture()def原创 2020-10-17 20:46:03 · 2070 阅读 · 1 评论 -
Pytest中@pytest.fixture()装饰器和conftest.py配置文件的使用
Pytest提供了fixture机制,通过它可以在测试执行前后执行一些操作,类似setup和teardown。很多时候,我们需要在测试用例执行前做数据库连接的准备,做测试数据的准备,测试执行后断开数据库连接,清理测试脏数据这些工作。@pytest.fixture函数的scope可能的取值有function,class,module,package 或 session。他们的具体含义如下:function,表示fixture函数在测试方法执行前和执行后执行一次。 class,表示fixture函原创 2020-10-16 22:39:47 · 2567 阅读 · 2 评论 -
pytest中前置setup和后置teardown的使用方法
前言学过unittest的都知道里面用前置和后置setup和teardown非常好用,在每次用例开始前和结束后都去执行一次。当然还有更高级一点的setupClass和teardownClass,需配合@classmethod装饰器一起使用,在做selenium自动化的时候,它的效率尤为突出,可以只启动一次浏览器执行多个用例。pytest框架也有类似于setup和teardown的语法,并且还不止这四个用例运行级别 模块级(setup_module/teardown_module)开始于模块原创 2020-10-16 00:30:14 · 2191 阅读 · 0 评论 -
fixture使用案例scope=“function“
importpytest#fixture(scope="function",params=None,autouse=False,ids=None,name=None):#@pytest.fixture()如果不写参数,默认就是scope="function",它的作用范围是每个测试用例来之前运行一次#如果autouse为True,则为所有测试直接激活fixture,无需往每个函数传入fixture就可以调用它。如果为False(默认值),则需要往测试函数传入fixture标记...原创 2020-09-09 17:48:19 · 1028 阅读 · 0 评论 -
pytest使用简介和pytest.main()运行测试用例
pytest装饰器@pytest.mark.自定义名称,如@pytest.mark.smoke运行pytest -m 'smoke' A文件名,执行A文件中用smoke标记的测试;不指定A文件,运行pytest -m smoke ,执行当前目录下以及子目录中所有用smoke标记的测试函数。@pytest.mark.skip(reason='跳过的原因') ,执行测试时,被标记的测试函数或方法跳过不执行@pytest.mark.xfail() 被标记的测试函数或方法预期失败...原创 2020-09-06 21:09:10 · 2453 阅读 · 0 评论