Pytest
王大力测试进阶之路
这个作者很懒,什么都没留下…
展开
-
Pytest标记预期失败得测试用例@pytest.mark.xfail()
pytest除了测试函数中使用这个方法pytest.xfail()外,xfail还有一种使用方法。就是@pytest.mark.xfail()标记预期会失败的用例,即期望测试用例是失败的,但是不会影响测试用例的的执行。标记的用例运行后,断言失败,所以结果是xfailed,也没有像正常一样显示出错误用例及具体信息。预期会失败,实际断言失败xfailed#!/usr/bin/env python# _*_coding:utf-8_*_import pytestclass Te...原创 2020-06-02 20:17:03 · 1197 阅读 · 0 评论 -
Pytest参数选项在脚本中和命令行用法详解
运行pytest可以指定目录和文件,如果不指定,pytest会搜索当前目录及其子目录中以test_开头或以_test结尾得测试函数。我们把pytest搜索测试文件和测试用例的过程称为测试搜索(test discovery)。只要遵循pytest的命名规则,pytest就能自动搜索所有待执行的测试用例。1、测试文件命名规则,test_xxx.py或xxx_test.py2、方法、测试函数命名规则,test_xxx3、测试类命名规则,Testxxx,并且不能带有init方法项...原创 2020-05-30 14:43:59 · 996 阅读 · 0 评论 -
Pytest之pytest.assume用例中断言1失败会继续执行后续代码断言2
一般我们做自动化测试时,一个用例会写多个断言,当第一个断言失败后,后面的代码就不会执行了,于是我们引进了pytest-assume插件可以解决断言失败后继续断言的问题。一、安装依赖包pip install pytest-assume二、使用assert进行断言我们发现test_01用例中,第一个断言assert 0 == 1失败时,后面的代码不会再执行,print('执行test_01断言2')和assert 1 == 2未执行。#!/usr/bin/env pytho...原创 2020-05-26 18:47:05 · 2673 阅读 · 0 评论 -
Pytest Hooks方法之pytest_collection_modifyitems改变测试用例执行顺序
pytest默认执行用例顺序是根据项目下文件名称按ascii码去收集运行的,文件里的用例是从上往下按顺序执行的.pytest_collection_modifyitems 这个函数顾名思义就是收集测试用例、改变用例的执行顺序的。一、pytest_collection_modifyitems是测试用例收集完成后,可以改变测试用例集合(items)的顺序,items是用例对象的一个列表,改变items里面用例的顺序就可以改变用例的执行顺序了。源码如下:def pytest_col...原创 2020-05-20 14:40:40 · 1022 阅读 · 0 评论 -
Pytest Hooks方法之pytest_runtest_makereport获取测试用例结果
pytest提供的钩子(Hooks)方法之pytest_runtest_makereport,可以更清晰的了解用例的执行过程,并获取到每个用例的执行结果。一、Hook 方法之 pytest_runtest_makereport源码:@hookspec(firstresult=True)def pytest_runtest_makereport(item, call): """ return a :py:class:`_pytest.runner.TestReport` object原创 2020-05-19 21:48:09 · 4074 阅读 · 1 评论 -
Pytest+Allure+Jenkins接口自动化项目实战(一)
经过一周多时间,基于python+pytest+excel+allure框架的接口自动化测试初版已基本实现,包括基本配置读取、用例读取、用例执行、sql读取执行、前置数据准备、后置数据清理以及测试报告生成等,环境独立运行、项目独立运行、用例独立运行、jenkins集成、邮件发送暂未实现,再后期版本会再次推出,现在把整个框架设计思路和想法分享给大家来参考和借鉴。希望大家也能提供更好的思...原创 2020-01-20 13:09:08 · 5946 阅读 · 11 评论 -
Pytest框架集成Allure定制测试报告详解(一)
Allure简介Allure是一款非常轻量级并且非常灵活的开源测试报告生成框架。 它支持绝大多数测试框架, 例如TestNG、Pytest、JUint等。它简单易用,易于集成。下面就Pytest如何与Allure集成做详细介绍。Pytest框架集成AllurePytest是Python的单元测试框架,非常方便和易用。强烈推荐对于用Python进行测试工作的小伙伴使用这个测试框架,相比与Py...原创 2020-01-17 17:29:01 · 2401 阅读 · 0 评论 -
Pytest标记用例失败之xfail
项目自动化测试中,如果接口2依赖接口1的响应结果值,或者用例2依赖用例1的响应结果值,自然需要与接口1或用例1进行关联,但是当接口1或用例1执行失败,接口2或用例2一定也是失败的,所以这时不必要再进行接口2和用例2的执行,只需要判断当接口1或用例1执行失败,直接标记接口2或用例2失败xfail1、pytest 里面用 xfail 标记用例为失败的用例pytest.xfail('跳...原创 2019-12-01 18:06:18 · 851 阅读 · 0 评论 -
Pytest自定义标记mark及特定运行方式
mark 标记 标记执行指定类pytest.main(['-s','文件名','-m=标记名'])pytest.main(['-s','test01.py','-m=test'])import [email protected] Test(object): def test_01(self): print('test_...原创 2019-11-28 16:23:38 · 1873 阅读 · 0 评论 -
Pytest fixture之request传参
Pytest中我们经常会用到数据参数化,我们来介绍下装饰器@pytest.fixture()配合request传参的使用user = request.param如果想把登录操作放到前置操作里,也就是用到@pytest.fixture装饰器,传参就用默认的request参数user = request.param 这一步是接收传入的参数,本案例是传一个参数情况@pytest.ma...原创 2019-11-28 12:52:36 · 2044 阅读 · 1 评论 -
Pytest全局用例共用之conftest.py详解
一、’conftest特点:1、可以跨.py文件调用,有多个.py文件调用时,可让conftest.py只调用了一次fixture,或调用多次fixture2、conftest.py与运行的用例要在同一个pakage下,并且有__init__.py文件3、不需要import导入 conftest.py,pytest用例会自动识别该文件,放到项目的根目录下就可以全局目录调用了,如果放到某...原创 2019-11-08 16:56:49 · 28780 阅读 · 3 评论 -
Pytest脚本中运行用例方式
脚本树如下:test1文件下test_01.py存放test1和test2用例test1文件下test_02.py存放test1和test2用例test2文件下test_03.py存放test1和test2用例test2文件下test_04.py存放test1和test2用例1、运行所有用例import pytestif __name__ == "__main__":...原创 2019-11-06 16:02:22 · 1507 阅读 · 0 评论 -
Pytest装饰器@pytest.mark.parametrize一键生成接口正交试验用例
我们在做接口测试时,有时会遇到涉及用例特别多的时候,每个用例都去手动调一遍,很费时费力,也是不现实的,这篇文章我们就解决下这种费时费力的情况.一、业务需求某所大学通信系共2个班级,刚考完某一门课程,想通过“性别”、“班级”和“成绩”这三个查询条件对通信系这门课程的成绩分布,男女比例或班级比例进行人员查询:根据“性别”=“男,女”进行查询根据“班级”=“一班,二班”查询根据...原创 2019-11-06 15:37:03 · 729 阅读 · 0 评论 -
Python Pytest装饰器@pytest.mark.parametrize用例数据驱动(三)
一、测试用例用excel管理,存放地址:C:\Users\wangli\PycharmProjects\Test\test\files\apiCase.xls二、代码实现如下:1、封装读取excel用例数据2、Pytest装饰器@pytest.mark.parametrize('参数名',list)实现登录模块2条测试用例数据驱动import pytest,xlrd...原创 2019-11-03 11:43:29 · 3794 阅读 · 1 评论 -
Python Pytest装饰器@pytest.mark.parametrize多样参数化(二)
Pytest中装饰器@pytest.mark.parametrize('参数名',list)可以实现测试用例参数化,类似DDT1、第一个参数是字符串,多个参数中间用逗号隔开2、第二个参数是list,多组数据用元祖类型;传三个或更多参数也是这样传。list的每个元素都是一个元组,元组里的每个元素和按参数顺序一一对应3、传一个参数@pytest.mark.parametrize('参数名'...原创 2019-11-02 15:14:37 · 4388 阅读 · 0 评论 -
Python pytest框架之@pytest.fixture()和conftest详解
一、fixture简介学pytest就不得不说fixture,fixture是pytest的精髓所在,类似unittest中setup/teardown这种前后置东西。但是比它们要强大、灵活很多,它的优势是可以跨文件共享fixture的目的是提供一个固定基线,在该基线上测试可以可靠地和重复地执行。fixture提供了区别于传统单元测试(setup/teardown)有显著改进1、有独立的命名...原创 2019-09-12 19:47:21 · 12396 阅读 · 4 评论 -
Python Pytest调用fixture之@pytest.mark.usefixtures()、叠加usefixtures、@pytest.fixture(autouse=True)用法详解
usefixtures与传fixture区别如果fixture有返回值,那么usefixture就无法获取到返回值,这个是装饰器usefixture与用例直接传fixture参数的区别。当fixture需要用到return出来的参数时,只能讲参数名称直接当参数传入,不需要用到return出来的参数时,两种方式都可以。1.函数或类里面方法直接传fixture的函数参数名称...原创 2019-09-16 14:29:04 · 9675 阅读 · 0 评论 -
Python Pytest中fixture之yield唤醒teardown和终结函数addfinalizer
引入我们之前学习的都是测试用例的前置固件,也就是相当于“setup”。说到这,细心的你可能想到了,那有没有什么方式可以表示出“teardown”?这就是我们今天学习的yield和addfinalizer。yieldyield是一个关键字,它不是单独存在的,要写在fixtrue标记的固件中。我们在声明的固件myfixture中加入yield关键字,在它下面写测试用例执行后想要运行的代码;...原创 2019-09-17 10:45:09 · 2103 阅读 · 0 评论 -
Python Pytest装饰器@pytest.mark.parametrize详解
Pytest中装饰器@pytest.mark.parametrize('参数名',list)可以实现测试用例参数化,类似DDT如:@pytest.mark.parametrize('请求方式,接口地址,传参,预期结果',[('get','www.baidu.com','{"page":1}','{"code":0,"msg":"成功"})',('post','www.baidu.com','{"...原创 2019-09-18 15:55:09 · 32446 阅读 · 3 评论 -
Python Pytest前置setup和后置teardown详解
pytest用例运行级别:●模块级(setup_module/teardown_module)开始于模块始末,全局的(类外生效、函数中生效)●函数级(setup_function/teardown_function)只对函数用例生效(类外有函数时生效)●类级(setup_class/teardown_class)只在类中前后运行一次(在类中生效,类外不生效)●方法级(setup_metho...原创 2019-09-09 20:29:42 · 6559 阅读 · 2 评论