pytest
公众号:BugBear软件测试 欢迎关注,成长交流
BugBear1989
这个作者很懒,什么都没留下…
展开
-
pytest框架笔记(一) : pytest简介
一、学习前言最近打算开始学习pytest框架,听说pytest框架比unittest好用很多,所以觉得自己还是需要学习一下。pytest是python的一种单元测试框架,与python自带的unittest测试框架类似,但是比unittest框架使用起来更简洁,效率更高。根据pytest的官方网站介绍,它具有如下特点:1、非常容易上手,入门简单,文档丰富,文档中有很多实例可以参考2...原创 2019-09-18 20:51:06 · 668 阅读 · 0 评论 -
pytest框架笔记(十三) : Pytest+Allure定制报告
一、前言Allure框架是一个灵活的轻量级多语言测试报告工具,它不仅以web的方式展示了简介的测试结果,而且允许参与开发过程的每个人从日常执行的测试中最大限度的提取有用信息从dev/qa的角度来看,Allure报告简化了常见缺陷的统计:失败的测试可以分为bug和被中断的测试,还可以配置日志、步骤、fixture、附件、计时、执行历史以及与TMS和BUG管理系统集成,所以,通过以上配置,所有负...原创 2019-09-23 23:08:57 · 3298 阅读 · 0 评论 -
pytest框架笔记(十四) : 配置文件pytest.ini
一、前言pytest配置文件可以改变pytest的运行方式,它是一个固定的文件pytest.ini文件,读取配置信息,按指定的方式去运行二、ini配置文件pytest里面有些文件是非test文件pytest.ini : pytest的主配置文件,可以改变pytest的默认行为 conftest.py : 测试用例的一些fixture配置集中管理 _init_.py : 识别该文...原创 2019-09-28 21:52:21 · 1961 阅读 · 1 评论 -
pytest框架笔记(十五) : pytest分布式执行 (pytest-xdist)
前言平常我们手工测试用例非常多时,比如有1千条用例,假设每个用例执行需要1分钟。如果一个测试人员执行需要1000分钟才能执行完,当项目非常紧急的时候,我们会用测试人力成本换取时间成本,这个时候多找个小伙伴把任务分成2部分,于是时间缩减一半。如果是十个人一起执行,1000个用例理论上只需100分钟就能完成,时间缩短到了1/10。大大节省的测试时间,为项目节省了时间成本。同样道理,当我们测试...原创 2019-10-06 22:45:37 · 516 阅读 · 0 评论 -
pytest框架笔记(十六) : fixture作为参数传入以及error和failed区别
一、前言fixture是pytest的核心功能,也是亮点功能,熟悉掌握fixture的使用方法,pytest用起来才会得心应手二、fixture简介fixture的目的是提供一个固定基线,在该基线上测试可以可靠地和重复地执行。fixture提供了区别于传统单元测试(setup/teardown):有独立的命名,并通过声明它们从测试函数、模块、类或整个项目中的使用来激活。 按模块化...原创 2019-10-06 22:45:26 · 919 阅读 · 0 评论 -
pytest框架笔记(十七) : fixture的作用范围(scope)
一、前言fixture里面有个scope参数可以控制fixture的作用范围:session > module > class > function二、fixture作用范围function:每一个函数或方法都会调用 class:每一个类调用一次,一个类可以有多个方法 module:每一个.py文件调用一次,该文件内又有多个function和class se...原创 2019-10-06 16:47:06 · 811 阅读 · 0 评论 -
pytest框架笔记(十八) : 使用多个fixture和fixture互相调用
一、前言一个用例是可以传多个fixture参数的,如果fixture之间有依赖关系,也可以互相调用二、使用多个fixture如果用例需要用到多个fixture的返回数据,fixture也可以return一个元组、list或字典,然后从里面取出对应数据#!encoding=utf-8import pytest#fixture@pytest.fixture()def use...原创 2019-10-06 22:13:34 · 661 阅读 · 0 评论 -
pytest框架笔记(十九) : conftest.py作用范围
一、前言一个测试工程下是可以有多个conftest.py文件的,一般在工程根目录放一个conftest.py起到全局作用。在不同的测试子目录也可以放conftest.py,作用范围只在该层级以及以下目录生效二、conftest层级关系web_conf_py是项目工程名称│ conftest.py│ __init__.py│ ├─baidu│...原创 2019-10-06 22:54:56 · 869 阅读 · 0 评论 -
pytest框架笔记(二十) : 运行上次失败用例(--lf和--ff)
一、前言当用例特别多的时候,为了节省时间,第一次部分用例失败了,修复完之后,可以只测上次失败的用例二、pytest运行上次失败用例通过pytest -h,找到里面两个命令行参数:--lf和 --ff--lf,叫--last-failed,只重新运行上次运行失败的用例(或如果没有失败的话会全部跑) --ff,叫--failed-first,运行所有测试,但首先运行上次运行失败的测试...原创 2019-10-07 12:39:51 · 770 阅读 · 0 评论 -
pytest框架笔记(十二) : fixture之autouser=True
一、前言平常写自动化用例会写一些前置的fixture操作,用例需要用到就直接传该函数的参数名称就行了,当用例很多的时候,每次都传这个参数,会比较麻烦。fixtrue里面有个参数autouse,默认是False没有开启的,可以设置为True开启自动使用fixtrue功能,这样用例就不用每次都去传参了调用fixtrue有三种方法:函数或类里面方法直接传fixtrue的函数参数名称 使...原创 2019-09-23 16:51:46 · 423 阅读 · 0 评论 -
pytest框架笔记(十一) : 标记失败xfail
一、前言当用例a失败的时候,如果用例b和用例c都是依赖于第一个用例的结果,那可以直接跳过用例b和c用例,直接给他标记失败xfail用到的场景,登录是第一个用例,登录之后的操作b是第二个用例,登录之后操作c是第三个用例,很明显三个用例都会走到登录如果登录都失败了,那后面2个用例就没测试的必要了,直接跳过,并且标记为失败用例,这样可以节省用例时间二、用例设计1、pytest里面用x...原创 2019-09-23 15:56:19 · 513 阅读 · 0 评论 -
pytest框架笔记(十) : 使用自定义标记mark
一、前言pytest可以支持自定义标记,自定义标记可以把一个web项目划分为多个模块,然后指定模块名称执行。app自动化的时候,如果想android和ios公用一套代码时,也可以使用标记功能,标明哪些是ios用例,哪些是android用例,运行代码时指定mark名称运行。二、mark标记1、以下用例,标记test_send_http()为webtestimport pytest...原创 2019-09-23 15:21:54 · 1003 阅读 · 1 评论 -
pytest框架笔记(二) : 测试用例setup和teardown
一、用例运行级别1、模块级:开始于模块始末,全局的setup_module:模块开始时执行teardown_module:模块结束时执行2、函数级只对函数用例生效(不在类中)setup_function:函数开始时执行teardown_function:函数结束时执行3、方法级开始于方法始末(在类中)setup_method:方法开始时执行teard...原创 2019-09-18 22:18:45 · 949 阅读 · 2 评论 -
pytest框架笔记(三) : fixture之conftest.py
一、fixture优势1、fixture相对于setup和teardown来说应该有以下几点优势:命名方式灵活,不局限于setup和teardown这几个命名 conftest.py配置里可以实现数据共享,不需要import就能自动找到一些配置 scope="module"可以实现多个.py跨文件共享前置 scope="session"以实现多个.py跨文件使用一个session来完...原创 2019-09-18 23:31:18 · 2601 阅读 · 0 评论 -
pytest框架笔记(四) : fixture之yield实现teardown
一、yield执行teardown1、上一节讲的是用例前加前置条件,在这里讲一下fixture里面利用yield来唤醒teardown的执行#!encoding=utf-8import pytest@pytest.fixture(scope="module")def open(): print("打开浏览器,并且打开百度首页") yield print("...原创 2019-09-19 17:24:12 · 736 阅读 · 0 评论 -
pytest框架笔记(五) : 参数化parametrize
pytest.mark.parametrize装饰器可以实现测试用例参数化一、parametrize1、这里是一个实现检查一定的输入和期望输出测试功能的典型例子#!encoding=utf-8import pytest@pytest.mark.parametrize("test_input,expected",[("3+5",8),("2+4",6),("6*9",54)])...原创 2019-09-19 21:43:08 · 618 阅读 · 0 评论 -
pytest框架笔记(六) : assert断言
断言是写自动化测试基本最重要的一步,一个用例没有断言,就失去了自动化测试的意义了,什么是断言呢?简单来讲就是实际结果和期望结果去对比,符合预期那就测试pass,不符合预期那就测试failed一、assertpytest允许您使用标准python断言来验证python测试中的期望和值。#!encoding=utf-8def f(): return 3def test...原创 2019-09-19 22:32:54 · 1089 阅读 · 0 评论 -
pytest框架笔记(七) : skip跳过用例
pytest.mark.skip可以标记无法在某些平台上运行的测试功能,或者您希望失败的测试功能skip意味着只有在满足某些条件时才希望测试通过,否则pytest应该跳过运行测试。常见示例是在非windows平台上跳过仅限windows的测试或跳过依赖于当前不可用的外部资源(例如数据库)。xfail意味着您希望测试由于某种原因而失败。一个常见的例子是对功能的测试尚未实施。或尚未修复的错误。当测...原创 2019-09-20 17:31:05 · 1183 阅读 · 1 评论 -
pytest框架笔记(八) : allure2生成html测试报告
一、前言allure是一个report框架,支持java的Junit/testng等框架,当然也可以支持python的pytest框架,也可以集成到Jenkins上展示高大上的报告界面二、环境配置1、安装配置pip3 install pytestpip3 install allure-pytest2、安装allure2下载地址:https://dl.bintray.co...原创 2019-09-23 11:05:32 · 658 阅读 · 0 评论 -
pytest框架笔记(九) : 函数传参和fixture传参数request
一、前言为了提高代码的复用性,我们在写用例的时候,会用到函数,然后不同的用例去调用这个函数。比如登录操作,大部分的用例都会先登录,那就需要把这个登录单独抽出来写个函数,其他用例全部的调用这个登录函数就行。但是登录的账号不能写死,有时候要用账号1登录、执行用例1,用账号2登录执行用例2,所以需要对函数传参二、函数传参把登录单独成立,写一个函数,传2个参数user和psw,写用例的时候...原创 2019-09-23 14:21:45 · 2028 阅读 · 0 评论 -
pytest框架笔记(二十一) : 重复执行用例(pytest-repeat)
一、前言平常在做功能测试的时候,经常会遇到某个模块不稳定,偶然会出现一些bug,对于这种问题我们会针对此用例反复执行多次,最终复现出问题来。自动化运行用例时候,也会出现偶然的bug,可以针对单个用例,或者针对某个模块的用例重复执行多次。二、pytest-repeatpytest-repeat是pytest的一个插件,用于重复执行单个用例,或多个测试用例,并指定重复次数使用--c...原创 2019-10-07 13:28:57 · 960 阅读 · 0 评论