pytest学习 一】的更多相关文章

pytest学习笔记(三)   接着上一篇的内容,这里主要讲下参数化,pytest很好的支持了测试函数中变量的参数化 一.pytest的参数化 1.通过命令行来实现参数化 文档中给了一个简单的例子, test_compute.py 的测试函数如下: # content of test_compute.py def test_compute(param1): assert param1 < 4 在conftest.py中添加两个函数,一个是添加参数,一个是根据参数生成测试 # content of…
一.前言 从文章标题可以看出,就是初始化和释放的操作,根据我的java习惯来学习pytest,个人感觉没差太多,理解上也不是很难. 哦,对了,差点跑题了,这个框架是基于Python语言的,在学习的时候难免总会用java的类比思想来学习,下面言归正传哈. 我们还从 unittest与pytest来对比学习吧 二.unittest用法 unittest有两个前置方法,两个后置方法,分别是: setup() setupClass() teardown() teardownClass() 个人始终觉得u…
From: https://blog.csdn.net/gaowg11/article/details/54910974 由于对测试框架了解比较少,所以最近看了下pytest测试框架,对学习心得做个记录. 学习的教程是刘春明老师的文章 http://blog.csdn.net/liuchunming033/article/details/46501653 1.pytest简介 pytest是Python的一种单元测试框架,与python自带的unittest测试框架类似,但是比unittest框…
前言 之前做自动化测试的时候,用的测试框架为Python自带的unittest框架,随着工作的深入,发现了另外一个框架就是pytest (官方地址文档http://www.pytest.org/en/latest/),这个框架支持的插件比较多,相对unittest来说,使用起来更加的强大,更加的方便,从今天开始就一步步学习pytest 简介 The pytest framework makes it easy to write small tests, yet scales to support…
这两天在学习pytest,之前有小用到pytest,觉得这个测试框架很灵巧,用在实现接口自动化(pytest+requests)非常的轻便,然后很有兴致的决定学习下,然后又发现了pytest-selenium这么个神奇的东东,加上pytest-rerunfailures失败case自动执行,pytest-html完美测试报告生成,完全就解决了我的selenium测试中的难点,仔细研读了下pytest的英文文档,发现这个框架和丰富的plugins真的很好用,所以决心仔细研究下pytest,下面就开…
前言 十一也赶上自己刚出院,本想在十一放假前用假期刷完Pytest的,结果被希洛克神话吸引,再次回归毒奶粉,一直奋斗到距离上班还有两天,引导石刷没了,就没了智慧. 当然也没出过神话,结果一怒之下卸载,开始收收心,准备学习,用了两个下午时间看了下pytest的官方文档,全是英文的,用谷歌翻译看的也是一知半解,基于理解产出文章两篇. 十一节后上班,直到现在迟迟一直未更文学习.因为一些事,导致无法专心学习,但是刷完pytest这个事,我还是记得,毕竟2020年结束还有俩约,是时候在年底冲刺一波未完成的…
一.前言 学习pytest总会习惯性的和unittest对比使用,自然就断言pytest和unittest也是有些区别的. 二.断言对比 unittest 断言 assertEqual(a, b) # 判断a和b是否相等 assertNotEqual(a, b) # 判断a不等于b assertTrue(a) # 判断a是否为Ture assertFalse(a) #判断a是否为False assertIn(a, b) # a 包含在b里面 asserNotIn(a, b) # a 不包含在b里…
前言 个人认为,fixture是pytest最精髓的地方,也是学习pytest必会的知识点. fixture用途 用于执行测试前后的初始化操作,比如打开浏览器.准备测试数据.清除之前的测试数据等等 用于测试用例的前置条件,比如UI自动化的登录操作,读取config参数等 用于测试用例之间的参数和数据传递 fixture优势 firture相对于unittest中的setup和teardown来说应该有以下几点优势 命名方式更加的灵活,不局限于setup和teardown conftest.py…
接着上一篇的内容,这里主要讲下参数化,pytest很好的支持了测试函数中变量的参数化 一.pytest的参数化 1.通过命令行来实现参数化 文档中给了一个简单的例子, test_compute.py 的测试函数如下: # content of test_compute.py def test_compute(param1): assert param1 < 4 在conftest.py中添加两个函数,一个是添加参数,一个是根据参数生成测试 # content of conftest.py def…
继续文档的第二章 (一)pytest中可以在命令行中静态/动态添加option,这里没什么好讲的,略过... 这里面主要讲下如何试用skip/xfail,还有incremental(包含一些列的测试步骤,如果某一步出错后,该步骤之后的所有步骤都没有任何意义了,xfail掉) 1)首先来看下怎样通过命令行来skip一些case,首先要添加个option,然后使用@pytest.mark.skipif( condition) , xfail使用@pytest.mark.xfail( conditio…
一.pytest简介 Pytest是python的一种单元测试框架. pytest的特点: 入门简单,文档丰富 支持单元测试,功能测试 支持参数化,重复执行,部分执行,测试跳过 兼容其他测试框架(nose,unittest 等) 支持生成html报告 可集成CI环境(Jenkins 等) 第三方插件丰富,良好的自定义扩展性 二.pycharm中使用pytest 1.pytest安装:对于测试而言,特别是在持续集成环境中,我们的所有测试最好是在虚拟环境中.这样不同的虚拟环境中的测试不会相互干扰的.…
1.官方文档上说pytest兼容unittest时,不支持setUpModule 和 tearDownModule,但实际验证是可以的. 验证的场景是py文件中,只有一个测试类, 经验证有多个测试类,使用pytest时,setUpModule 和 tearDownModule 也不生效. 所以不知道不支持的是什么场景? 2.生成html报告 安装pytest-html 需要在cmd中执行命令:py.test test_class.py --html=./report.html 因为同时存在pyt…
组织分层: 1.普通方式,和unittest分层类似: setup_module()  # 通常放在类外 setup_class(cls) setup(self) teardown(self) teardown_class(cls) teardown_module() 2.pytest特有的分层方式 @pytest.fixture() 装饰fixture @pytest.mark.usefixtures() 使用fixture 例一: @pytest.fixture() # 默认scope是fu…
在pytest 2.0以上的版本里,我们也可以通过python -m pytest ...来调用.这实际上和pytest ...几乎一摸一样. 只是用python的时候,把当面目录也加入到sys.path中. pytest的返回值如下: Exit code 0: All tests were collected and passed successfully Exit code 1: Tests were collected and run but some of the tests faile…
可以把多个test放在一个class里, class TestClass(object): def test_one(self): x = "this" assert 'h' in x def test_two(self): x = "hello" assert hasattr(x, 'check') 为什么会找到呢,因为,在pytest的文档里,说明查找的规范思路: pytest implements the following standard test dis…
pytest是python的一个测试框架,主要是用来进行一些小的测试. 在pycharm中,缺省用的是unittest,这里说明如何设置为pytest. 当然,第一部是安装pytest pip3 install pytest 然后,在pycharm中,files->settings->tools=>python integrated tools=>设定default test runner 然后,写一个简单的py程序(记住,test_*.py or *_test.py): def…
前言 官方文档关于fixture功能的解释如下: The purpose of test fixtures is to provide a fixed baseline upon which tests can reliably and repeatedly execute. pytest fixtures offer dramatic improvements over the classic xUnit style of setup/teardown functions: fixtures…
前面介绍的是在cmd中执行pytest,平常我们一般都是通过编译器(如pycharm)来编写用例的,写完用例后,需要调试看看是否能运行,如果每次都切换到cmd中执行,太麻烦. 因此,这一节来说下怎么在代码中执行pytest. 需要先导入pytest,并通过pytest.main()来执行. import pytest class TestClass(object): def test_one(self): x = "this" assert 'h' in x def test_two(…
在用pytest执行用例时,可以按照如下场景来执行 1.执行目录及其子目录下的所有用例 pytest filename\ 2.执行某一个py文件下的用例 pytest filename.py 3.-k 按关键字匹配 pytest test_class.py -k "TestClass and not two" 运行test_class.py中的TestClass.test_one,不运行TestClass.test_two. 4.按节点运行 每个收集的测试都分配了一个唯一的nodeid…
简介 pytest是python的一个单元测试框架,类似于unittest,相对unittest来说,pytest使用更简单,功能更强大. 安装 pip3 install -U pytest 查看版本 pytest --version 简单的测试 1.新建一个文件test_sample.py,编写如下测试用例 def func(x): return x + 1 def test_answer(): assert func(3) == 5 打开cmd窗口,进入到test_sample.py所在的文…
一.用例编写规则 1.unittest提供了test cases.test suites.test fixtures.test runner相关的类,让测试更加明确.方便.可控.使用unittest编写用例,必须遵守以下规则: (1)测试文件必须先import unittest (2)测试类必须继承unittest.TestCase (3)测试方法必须以"test_"开头 (4)测试类必须要有unittest.main()方法 2.pytest是python的第三方测试框架,是基于un…
该插件提供了两个命令行选项,用于重新运行上次pytest调用的失败: --lf,--last-failed- 只重新运行上次失败的用例,如果没有失败则全部运行 --ff,--failed-first- 先运行故障然后再运行其余的测试. 对于清理(通常不需要),--cache-clear选项允许在测试运行之前删除所有跨会话缓存内容. 首先只运行失败用例: 创建一个demo,执行50个用例,其中2个失败,48个成功.代码如下: import pytest @pytest.mark.parametri…
在测试过程中,参数化是必不可少的功能,本文就讨论下pytest的几种参数化方法 @pytest.mark.parametrize:参数化测试函数 1.内置的pytest.mark.parametrize装饰器支持测试函数的参数化基本用法 例如: @pytest.mark.parametrize("input,expect",[("3+5",8),("5+5",9),("4+9",12),("10+21",3…
Skip跳过用例 跳过(Skip)指,你希望如果某些条件得到满足你的测试用例才执行,否则Pytest应该完全跳过运行该用例 1. 跳过测试用例的最简单方法是使用skip装饰器标记它,可以传递一个可选的原因reason参数: @pytest.mark.skip(reason="目前无法执行该用例") def test_skip_2(): print("该用例不执行") 2.也可以在用例执行前进行某些前置条件检查,例如检查预期前置条件是否满足,比较值等 def test…
使用Mark标记测试用例 通过使用pytest.mark你可以轻松地在测试用例上设置元数据.例如, 一些常用的内置标记: skip - 始终跳过该测试用例 skipif - 遇到特定情况跳过该测试用例 xfail - 遇到特定情况,产生一个"期望失败"输出 parametrize - 在同一个测试用例上运行多次调用(译者注: 参数化数据驱动) 创建自定义标记或将标记应用于整个测试类或模块很容易. 文档中包含有关标记的示例,详情可参阅[使用自定义标记. 注意: 标记只对测试用例有效,对f…
源码注释: def fixture(scope="function", params=None, autouse=False, ids=None, name=None): """这是一个标记工厂函数的装饰器. 不管是否带有参数,这个装饰器是用来定义一个fixture函数. fixture函数的函数名被引用后,能够在运行测试用例前被调用: 测试模块或类可以使用pytest.marker.usefixtures(fixturename)来标记. 测试用例函数可…
断言: 一个标准的用例都包含了断言,编写pytest自动化脚本的时候,也需要设置断言 pytest常用断言比较大小与是否相等.是否包含.验证boolean 例子一: 验证是否相等: import pytest def test_eq_1(): assert 1==1 class Test_cls: def test_eq_2(self): assert 2!=3 def test_eq_3(self): assert 4>3 def test_eq_4(self): assert 3<6 de…
pytest常用运行方式 运行目录及子包下的所有用例: pytest 目录名 运行指定模块所有用例: pytest test_reg.py pytest test_reg.py::TestClass::test_method 运行指定模块指定类指定用例 运行名称包含指定表达式的用例:-k 表达式(支持and or not),如pytest -k "test_a and test_b" 运行指定标签(mark)的用例: -m 标签(支持and or not), 如pytest -m &q…
一.安装pytest: 在命令行窗口下执行: pip install -U pytest 检查安装的pytest版本: pytest -v 二.运行第一个测试用例: import pytest def func(n): return n+1 def test_answer(): assert 4==func(3) if __name__ == '__main__': pytest.main(["-q","test_1.py"])运行结果: 三.Pytest用例编写规…
pytest123 本文主要参考:https://www.cnblogs.com/yoyoketang/tag/pytest 如有侵权,请站内联系我 目录 pytest123 1.setup和teardown 2.fixture 3.单独运行test_fix1.py和test_fix2.py都能调用到login()方法,这样就能实现一些公共的操作可以单独拿出来了 4.生成HTML报告 5.assert 断言 ** 作者:上海-悠悠 QQ交流群:588402570** 6.skip 7.函数传参/…