在我们上文中,用了fixture函数是直接在用例的文件里定义的,那不能我们所有的用例想用到fixture都一个个定义吧,所以Pytest提供了一个conftest.py文件,这样呢,就可以把我们的fixture函数存放到这里
在上一篇文章中分享了 pytest 的基本用法,本文进一步介绍 pytest 的其他实用特性和进阶技巧。
自动化测试用例一般编写完后且又执行通过,都会提交到 git 仓库里。但是每次新增用例后,希望只执行未提交到 git 仓库里的用例。
添加了 @pytest.fixture,如果 fixture 还想依赖其他 fixture,需要用函数传参的方式,不能用 @pytest.mark.usefixtures() 的方式,否则会不生效。
conftest.py 文件名称是固定的,pytest 会自动识别该文件,可以理解成一个专门存放 fixture 的配置文件。
pytest 是一个功能强大的 Python 测试框架,它提供了许多灵活且易于扩展的功能。其中之一是使用 conftest.py文件来共享和管理测试代码的配置和工具函数。本文将介绍 conftest.py的作用,以及如何使用它来提高测试代码的可重用性和可维护性。
最近一段时间准备写一篇《自动化测试框架一键动态切换测试环境》的实践总结,但由于要涉及到pytest fixture相关知识,遂决定先写一篇pytest fixture的基础介绍。
测试结果显示,运行了一个测试用例,结果是红色,表示失败。错误信息显示,在代码的第7行抛出AssertionError。可以更改一下代码,让测试用例绿色通过。
小屌丝:鱼哥,最近为啥不讲一讲测试开发的技术,例如… 小鱼:我去~ ~ 你们这是商量好的,一起来提这个事情?小屌丝:为啥这么说呢?小鱼:因为最近有妹子跟我抱怨,说为啥不讲讲测试开发的知识,都是整的一些开发的… 小屌丝:难道不是吗?小鱼:兄弟,我也有苦衷啊~ ~ 小屌丝:别整那些没用的,今天就整一个吧!!!小鱼:整整整~~
Pytest的fixture相对于传统的xUnit的setup/teardown函数做了显著的改进:
写这篇文章,整体还是比较坎坷的,我发现有知识断层,理解再整理写出来,还真的有些难。
在Python语言系中,有很多可用的自动化测试框架,比如早期大多数人会选用 unittest+HTMLTestRunner、Nose等,最近几年比较常用的有Robot Framework,Robot Framework它是Python下一款非常通用的测试框架,采用扩展插件的机制可以帮助我们实现几乎任何类型的自动化测试工作,如接口自动化测试、App自动化测试、Web UI自动化测试等,而针对Robot Framework框架系统性的使用和讲解,笔者年初出版上市过一本《自动化测试实战宝典》一书,感兴趣的,可参阅此书:重磅消息 |《自动化测试实战宝典:从小工到专家》隆重上市!。
按 scope 的优先级,按顺序执行 s1,p1,m1,c1,f1(优先执行f3,之后a1,最后f1),f0,f2
有一点首先需要确认的的是,pytest中的fixture是pytest用于将测试前后进行预备,清理工作的代码分离出核心测试逻辑的一种机制。但是我们更加希望的是在一个测试套件中,能够共享fixture的机制,这样所一个测试套件里面的所有测试点都能够共同使用,和我在早期介绍的分离测试固件的思想有点雷同。在pytest中通过conftest.py来共享fixture,如果希望多个测试文件共同使用一个fixture时候,可以在该目录下创建conftest.py文件,但是切记该文件绝对不能倒入使用,这点一定要注意,创建conftest.py文件后,把需要的fixture加入到里面,就可以使用了。先来一个简单的案例,在一个包中,有三个测试模块,每个测试点都显示开始前执行和结束后执行,也就是说,每个测试点执行的时候,先打印测试开始,然后执行测试点,然后最后打印测试结束,见案例代码:
执行顺序:module --> class --> function --> 用例
2.2使用装饰器@pytest.mark.usefixtures()修饰需要运行的用例
@pytest.mark.parametrize添加indirect=True参数是为了把login当成一个函数去执行,而不是一个参数,并且将data当做参数传入函数。
当测试用例非常多的时候,一条条按顺序执行测试用例,是很浪费测试时间的。这时候就可以用到 pytest-xdist,让自动化测试用例可以分布式执行,从而大大节省测试时间。
在Pytest的测试框架中,也是内置了fixture的功能,这些内置的fixture在特定的测试场景下能够提高测试的效率,另外一个好处是它是内置的fixture,就不需要单独再写fixture了。就像Python语言中内置的函数一样,直接拿来调用实现想要实现的功能就可以了。下面具体来看这些内置的fixture它的含义以及在测试场景下的案例应用。
conftest.py中的fixture可以用在当前目录及其子目录,不需要import,pytest会自动找。
今天记录一下最近学习pytest的过程中对fixture功能的总结,学习pytest就要好好的了解下它的精髓所在—fixture,就像了解unittest中的setup和teardown一样。接下来开始正题:
B、某个单独的测试文件夹里创建conftest.py文件,文件中Fixture的作用范围,就仅局限于该测试文件夹里的测试模块;该测试文件夹外的测试模块,或者该测试文件夹外的测试文件夹,是无法调用到这个conftest.py文件中的Fixture。
setup、teardown 可以实现在执行用例前或结束后加入一些操作,但这种都是针对整个脚本全局的。
首先我们来学习下pytest的用来做前置工作和清理工作的setup和teardown方法。
在之前的文章里我们已经学习了Python自带测试框架UnitTest,但是UnitTest具有一定的局限性
本文中,云朵君将和大家一起学习Python中最好用的测试模块--Pytest,主要学习如下:
前面介绍了pytest传统的前后置处理方法,通过一些实例,知道了它对处理前后置的场景是有一定的局限性。所以才引入fixture装饰器函数,fixture是pytest的核心功能,也是亮点功能,它可以灵活的处理很多特殊的场景,利用pytest做接口测试,熟练掌握fixture的使用方法,pytest用起来才会得心应手!
代码有异常,且和raised的异常类匹配,所以是XFAIL(算测试通过的一种,表示符合期望捕捉到的异常),并不算FAILED
1、在conftest.py文件添加命令行选项,自定义命令行传入参数"--opt", 如果测试用例需要用到,从命令行传入参数,就调用opt函数。
固件的名称默认为定义时的函数名,如果不想使用默认,可以通过 name 选项指定名称:
测试平台,有人说它鸡肋,有人说它有用,有人说它轮子,众说纷纭,不如从自身出发,考虑是否要做测试平台:
在当前工作目录或子目录内部,创建 test_my_application.py 文件,其内容如下:
Pytest的fixtrue是存在作用域的,比如作用域为函数级别,那么没执行一条用例,就会重新执行一次fixtrue,如果是类级别,那么多个类执行时会在去执行fixture。fixture的作用域有5个,分别是: function,class,module,package,session。有了这些作用域我们可以不用重复的去执行fixture,从而节省时间。下面我们通过代码示例分别对这五种作用域来实验。
测试人员每天都跟不同的环境打交道,比如线上环境,测试环境,预上线环境等等,那么作为自动化测试人员写的代码,我们也要具备能自由切换环境的能力,那么今天就给大家聊一下,如何能让我们python语言写的测试用例可以自由切换到不同的环境下面去运行呢?
上期内容说到了pytest装饰器中的跳过、预期失败、以及数据参数化;还有分布式执行的内容。其中数据参数化,更是在日常工作中,必用到的一个点。
https://www.cnblogs.com/poloyy/category/1690628.html
tep是一款测试工具,在pytest测试框架基础上集成了第三方包,提供项目脚手架,帮助以写Python代码方式,快速实现自动化项目落地。fixture是pytest核心技术,本文聊聊如何使用fixture完成变量、接口、用例3个级别复用。
unittest和pytest是Python的2个强大的测试框架,经常用来做UI自动化或接口自动化。unittest是PyCharm的默认集成工具,也是我们大多数人入门自动化的首选框架。pytest提供了更丰富的功能,相对的上手难度也要高一点。如果学了pytest后,想快速用pytest写项目,用于工作实践,那么可以试试我写的这款测试工具:tep,try easy pytest。
pytest官网地址:https://github.com/pytest-dev/pytest/
python -m pytest –alluredir=[allure的xml目录]
在前置操作中生成了一个数据id,在测试用例需要引用,或者用例执行完成后需要在后置操作中删除。
pytest测试用例之间的参数如何传递?如在前置操作中生成了一个数据id,在测试用例需要引用,或者用例执行完成后需要在后置操作中删除。 还有很多同学经常问到的case1 生成了数据a,在case2 中引用这个值。这些在用例执行过程中生成的数据可以用cache缓存来解决。
Tech 导读 在自动化测试实践中,测试数据是制造测试场景的必要条件,本文主要讲述了在沟通自动化框架如何分层,数据如何存储,以及基于单元测试pytest下如何执行。并通过实践案例分享,提供数据驱动测试的具体落地方案。
假如你想让测试报告变得漂亮一点,那你一定会在搜索引擎中找到Allure测试报告的。Allure官方给出了个在线网站,访问以下链接就能一睹为快:
1、可以跨.py文件调用,有多个.py文件调用时,可让conftest.py只调用了一次fixture,或调用多次fixture
Environment 是环境变量,报告默认是没有任何变量参数的,是需要自己配置的。
领取专属 10元无门槛券
手把手带您无忧上云