Pytest学习笔记4-assert断言】的更多相关文章

pytest学习笔记(三)   接着上一篇的内容,这里主要讲下参数化,pytest很好的支持了测试函数中变量的参数化 一.pytest的参数化 1.通过命令行来实现参数化 文档中给了一个简单的例子, test_compute.py 的测试函数如下: # content of test_compute.py def test_compute(param1): assert param1 < 4 在conftest.py中添加两个函数,一个是添加参数,一个是根据参数生成测试 # content of…
前言 pytest作为单元测试框架,自然少不了断言功能,用过unittest的人都知道,在unittest中有丰富的断言方法,比如assertEqual().assertIn().assertTrue().assertIs()等等,而在pytest中,并没有提供特殊的断言方法,而是直接使用python自带的关键字assert来进行断言操作. 下面我们就通过一些来看看在pytest中是如何进行断言操作的吧 常用断言 Pytest里的断言实际上就是Python中的assert断言方法,常用断言方法如…
一.前言 学习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里…
前言:assert断言就是将实际结果和期望结果做对比,符合预期结果就测试pass,不符合预期就测试failed. 实例1:简单断言 实例1优化版--增加异常信息文字描述 异常断言 excinfo 是一个异常信息实例,它是围绕实际引发的异常的包装器.主要属性是.type. .value 和 .traceback 注意:断言type的时候,异常类型是不需要加引号的,断言value值的时候需转str ---------------------------------------------------…
前言 断言是写自动化测试基本最重要的一步,一个用例没有断言,就失去了自动化测试的意义了.什么是断言呢? 简单来讲就是实际结果和期望结果去对比,符合预期那就测试pass,不符合预期那就测试 failed 案例演示 def f(): return 3 def test_function(): a = f() assert a % 2 == 0, "判断a为偶数,当前a的值为:%s"%a 执行结果 =================================== FAILURES ==…
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,下面就开…
前言 我们在平时做测试的时候,经常会遇到一些偶现的bug,通常我们会多次执行来复现此类bug,那么在自动化测试的时候,如何多次运行某个或某些用例呢,我们可以使用pytest-repeat这个插件来帮助我们重复的去执行用例 pytest-repeat插件 插件安装 pip命令安装 pip install pytest-repeat 使用实例 上代码 def test_demo1(): print("执行测试用例1") def test_demo2(): print("执行测试用…
前言 pytest配置文件可以改变pytest的运行方式,它是一个固定的文件pytest.ini文件,读取配置信息,按指定的方式去运行. 常用的配置项 marks 作用:测试用例中添加了自定义标记( @pytest.mark.xxx 装饰器),如果不添加marks选项的话,就会报warnings 格式:list列表类型 写法: [pytest] # 自定义标记说明 markers = tencent: tencent toutiao: toutiao alibaba: alibaba xfail…
接着上一篇的内容,这里主要讲下参数化,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…
组织分层: 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…
前面介绍的是在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所在的文…
前言 我们在做自动化的时候,常常有这样的需求: 执行每一条用例时,都重新启动一次浏览器 每一条用例执行结束时,都清除测试数据 在unittest中,我们可以使用 setUp() 和 tearDown() 两个方法来实现以上需求,其中 setUp() 方法用于初始化测试固件:而 tearDown() 方法用于销毁测试固件.程序会在运行每个测试用例(以 test_ 开头的方法)之前自动执行 setUp() 方法来初始化测试固件,井在每个测试用例(以 test_ 开头的方法)运行完成之后自动执行 te…
前言 个人认为,fixture是pytest最精髓的地方,也是学习pytest必会的知识点. fixture用途 用于执行测试前后的初始化操作,比如打开浏览器.准备测试数据.清除之前的测试数据等等 用于测试用例的前置条件,比如UI自动化的登录操作,读取config参数等 用于测试用例之间的参数和数据传递 fixture优势 firture相对于unittest中的setup和teardown来说应该有以下几点优势 命名方式更加的灵活,不局限于setup和teardown conftest.py…
前言 在之前介绍fixture的文章中,我们使用到了conftest.py文件,那么conftest.py文件到底该如何使用呢,下面我们就来详细了解一下conftest.py文件的特点和使用方法吧 什么是conftest.py 我们之前了解了fixture,fixture可以直接定义在测试脚本中,但是有些时候,我们希望一个fixture可以被复用,这就需要对fixture进行集中管理,Pytest使用文件conftest.py集中管理固件.在复杂的项目中,可以在不同的目录层级定义conftest…
前言 在pytest中,我们可以使用mark进行用例的自定义标记,通过不同的标记实现不同的运行策略 比如我们可以标记哪些用例是生产环境执行的,哪些用例是测试环境执行的,在运行代码的时候指定对应的mark即可 实例说明 举个 # test_demo.py import pytest @pytest.mark.production def test_production(): print("生产环境测试用例") @pytest.mark.dev def test_dev1(): print…
前言 在实际的测试中,我们经常会遇到需要跳过某些测试用例的情况,pytest提供了skip和ifskip来跳过测试 下面我们就来通过一些例子看看skip和ifskip具体如何使用吧 skip的用法 使用示例:@pytest.mark.skip(reason="跳过的原因,会在执行结果中打印") 标记在测试函数中 举个 import pytest def test_1(): print("测试用例1") @pytest.mark.skip(reason="没…
前言 我们在实际自动化测试中,某些测试用例是无法通过一组测试数据来达到验证效果的,所以需要通过参数化来传递多组数据 在unittest中,我们可以使用第三方库parameterized来对数据进行参数化,从而实现数据驱动测试 而在pytest中,也提供了功能强大的@pytest.mark.parametrize装饰器来实现数据参数化 Pytest参数化的方式 pytest有三种传参方式 @pytest.mark.parametrize() 通过装饰器方式进行参数化(最常使用) pytest.fi…
前言 在进行自动化测试的过程中,我们一定会有这样的需求:希望失败的用例可以自动重跑 在pytest中,提供了pytest-rerunfailures插件可以实现自动重跑的效果 插件安装 pip命令安装 pip install pytest-rerunfailures 使用实例 重新运行所有失败的用例 如果需要把所有失败的用例都重新运行,使用 --reruns 命令,并且制定要运行的最大次数 举个: class TestDemo(object): def setup_class(self): pr…
1.官方文档上说pytest兼容unittest时,不支持setUpModule 和 tearDownModule,但实际验证是可以的. 验证的场景是py文件中,只有一个测试类, 经验证有多个测试类,使用pytest时,setUpModule 和 tearDownModule 也不生效. 所以不知道不支持的是什么场景? 2.生成html报告 安装pytest-html 需要在cmd中执行命令:py.test test_class.py --html=./report.html 因为同时存在pyt…
前言 官方文档关于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…
一.pytest框架中使用setup.teardown.更灵活按照用例级别可以分为以下几类: 1.模块级:(setup_module.teardown_module)在模块始末调用 2.函数级:(setup_function.teardown_function)在函数始末调用 在类外部 3.类级:(setup_class.teardown_class)在类始末调用 在类中 4.方法级:(setup_method.teardown_method)在方法始末调用 在类中 5.方法级:(setup.t…
前言 在pytest中,如何生成html测试报告呢,pytest提供了pytest-html插件,可以帮助我们生成测试报告,当然,如果希望生成更加精美的测试报告,我们还可以使用allure生成报告,下面我们就来详细看看如何实现吧 pytest-html插件 插件安装 pip命令安装 pip install pytest-html 使用实例 使用方法很简单,在测试用例的目录下执行命令 pytest --html=reportname.html 即可 生成的报告效果如下: 合并css 使用上面的命令…
前言:断言是自动化最终的目的,一个用例没有断言,就失去了自动化测试的意义了. 断言用到的是 assert关键字.之前的介绍,有的测试方法中其实用到了assert断言.简单的来说,就是预期的结果去和实际结果做对比,符合预期结果就是pass,不符合就fail. 比如以下的一段代码: def add(a,b): return a+b def test_assert(): assert 6 == add(3,4) 结果:可以看出,判断的结果是6,和方法返回的结果不一致,所以导致失败.从黄色部分的报错信息…
断言是写自动化测试基本最重要的一步,一个用例没有断言,就失去了自动化测试的意义了.什么是断言呢?简单来讲就是实际结果和期望结果去对比,符合预期那就测试 pass,不符合预期那就测试 failed pytest 允许使用标准 Python 断言来验证 Python 测试中的期望和值.例如 断言 f()函数的返回值,接下来会看到断言失败,因为返回的值是 3,判断等于 4,所以失败了从报错信息可以看到断言失败原因:E assert 3 == 4 import pytest def f(): retur…
类型断言: 语法:<目标类型的值>,<布尔参数> := <表达式>.( 目标类型 ) // 安全类型断言<目标类型的值> := <表达式>.( 目标类型 ) //非安全类型断言 x.(T),这里x表示一个接口的类型,T表示一个类型(也可为接口类型).一个类型断言检查一个接口对象x的动态类型是否和断言的类型T匹配. 类型断言分两种情况:第一种,如果断言的类型T是一个具体类型,类型断言x.(T)就检查x的动态类型是否和T的类型相同. 如果这个检查成功…