pytest学习笔记(三)   接着上一篇的内容,这里主要讲下参数化,pytest很好的支持了测试函数中变量的参数化 一.pytest的参数化 1.通过命令行来实现参数化 文档中给了一个简单的例子, test_compute.py 的测试函数如下: # content of test_compute.py def test_compute(param1): assert param1 < 4 在conftest.py中添加两个函数,一个是添加参数,一个是根据参数生成测试 # content of…
组织分层: 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…
前言 我们在实际自动化测试中,某些测试用例是无法通过一组测试数据来达到验证效果的,所以需要通过参数化来传递多组数据 在unittest中,我们可以使用第三方库parameterized来对数据进行参数化,从而实现数据驱动测试 而在pytest中,也提供了功能强大的@pytest.mark.parametrize装饰器来实现数据参数化 Pytest参数化的方式 pytest有三种传参方式 @pytest.mark.parametrize() 通过装饰器方式进行参数化(最常使用) pytest.fi…
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框…
这两天在学习pytest,之前有小用到pytest,觉得这个测试框架很灵巧,用在实现接口自动化(pytest+requests)非常的轻便,然后很有兴致的决定学习下,然后又发现了pytest-selenium这么个神奇的东东,加上pytest-rerunfailures失败case自动执行,pytest-html完美测试报告生成,完全就解决了我的selenium测试中的难点,仔细研读了下pytest的英文文档,发现这个框架和丰富的plugins真的很好用,所以决心仔细研究下pytest,下面就开…
接着上一篇的内容,这里主要讲下参数化,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.协议的分层      ISO在制定标准化OSI之前,对网络体系结构相关的问题进行了充分的讨论, 终于提出了作为通信协议设计指标的OSI參考模型.这一模型将通信协议中必要 的功能分成了7层.通过这些分层,使得那些比較复杂的网络协议更加简单化. 在这一模型中,每一个分层都接收由它下一层所提供的特定服务,而且负责为自己的上一层提供特定的服务.上下层之间进行交互时所遵循的约定叫做"接口".同一层之间的交互所遵循的约定叫做"协议". 协议分层就如同计算机软件中的模块化开发…
前言 之前做自动化测试的时候,用的测试框架为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…
前言 个人认为,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="没…
前言 我们在平时做测试的时候,经常会遇到一些偶现的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…
1.官方文档上说pytest兼容unittest时,不支持setUpModule 和 tearDownModule,但实际验证是可以的. 验证的场景是py文件中,只有一个测试类, 经验证有多个测试类,使用pytest时,setUpModule 和 tearDownModule 也不生效. 所以不知道不支持的是什么场景? 2.生成html报告 安装pytest-html 需要在cmd中执行命令:py.test test_class.py --html=./report.html 因为同时存在pyt…
(一)组织 这里所说的组织,就是我们所说的团队组织架构. 1.组织的类型 职能型: 在这种组织中,项目团队成员总是向职能经理报告,所有事务都有职能经理全权负责. 项目经理的决策需要与职能经理确认. 项目经理要作为职能经理的助手,协助职能经理完成工作. 项目经理的大量时间都用于完成行政任务,通常只是部分时间投入到项目管理中. 在职能型组织中往往会有项目联络人. 矩阵型: (1)弱矩阵型 项目经理有一些权力,但是不负责项目中的资源 重大决策仍需要在职能经理的合作或认可下做出. 项目联络人和项目协调人…
做接口测试的时候,当一个参数需要输入多个值的时候,就可以使用参数来实现: python中unittest单元测试,可以使用nose_parameterized来实现: 首先需要安装:pip  install nose-parameterized,导入该模块: 看下面的例子,一般我们写测试用例的时候会追条定义一个test*()的方法,然后执行所有测试用例,如下: import unittestdef calc(a,b): res=a+b return res class MyTest(unitte…
前言 官方文档关于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所在的文…
测试框架分层的整合 HibernateTemplate 和 HibernateDaoSupport,这两个类是 Spring 为整合 Hibernate3 提供的两个工具类. HibernateTemplate 是 Spring 的模板工具类之一,它只需要获得一个 SessionFactory 就可以执行持久化操作.HibernateDaoSupport 是 Spring 为实现 DAO 组件提供的一个工具类,它主要提供了两个方法以简化 DAO 的实现,具体如下. Public final Hi…
一.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…
前言 我们在做自动化的时候,常常有这样的需求: 执行每一条用例时,都重新启动一次浏览器 每一条用例执行结束时,都清除测试数据 在unittest中,我们可以使用 setUp() 和 tearDown() 两个方法来实现以上需求,其中 setUp() 方法用于初始化测试固件:而 tearDown() 方法用于销毁测试固件.程序会在运行每个测试用例(以 test_ 开头的方法)之前自动执行 setUp() 方法来初始化测试固件,井在每个测试用例(以 test_ 开头的方法)运行完成之后自动执行 te…
前言 pytest作为单元测试框架,自然少不了断言功能,用过unittest的人都知道,在unittest中有丰富的断言方法,比如assertEqual().assertIn().assertTrue().assertIs()等等,而在pytest中,并没有提供特殊的断言方法,而是直接使用python自带的关键字assert来进行断言操作. 下面我们就通过一些来看看在pytest中是如何进行断言操作的吧 常用断言 Pytest里的断言实际上就是Python中的assert断言方法,常用断言方法如…
前言 在进行自动化测试的过程中,我们一定会有这样的需求:希望失败的用例可以自动重跑 在pytest中,提供了pytest-rerunfailures插件可以实现自动重跑的效果 插件安装 pip命令安装 pip install pytest-rerunfailures 使用实例 重新运行所有失败的用例 如果需要把所有失败的用例都重新运行,使用 --reruns 命令,并且制定要运行的最大次数 举个: class TestDemo(object): def setup_class(self): pr…
前言 在pytest中,如何生成html测试报告呢,pytest提供了pytest-html插件,可以帮助我们生成测试报告,当然,如果希望生成更加精美的测试报告,我们还可以使用allure生成报告,下面我们就来详细看看如何实现吧 pytest-html插件 插件安装 pip命令安装 pip install pytest-html 使用实例 使用方法很简单,在测试用例的目录下执行命令 pytest --html=reportname.html 即可 生成的报告效果如下: 合并css 使用上面的命令…
我们在写case的时候,如果用例的操作是一样的,就是参数不同,比如说要测一个登陆的接口,要测正常登陆的.黑名单用户登陆的.账号密码错误的等等,在unittest里面就要写多个case来测试. 这样的情况只是调用接口的时候参数不一样而已,再写多个case的话就有点多余了,那怎么办呢,就得把这些参数都写到一个list里面, 然后循环去执行这个case.这样就可以省去写多个case了. 当然有个第三方模块就直接有这样的功能,不需要咱们再自己写循环了.那就是nose-parameterized,直接pi…
using this website to practice performance testing: http://advantageonlineshopping.com/#/ Jemeter how to recording using Firefox: https://www.youtube.com/watch?v=M7xHsut_w-I&ab_channel=TECHLIFE  在fixfox里面,当开了proxy端口后, 只有开始了Jmeter场景录制,在Firefox里面才可以访问相…