一、 为什么我用了pytest后就会喜欢上它

  1. pytest的框架规范更自由

    在使用unittest编写测试用例的时候,需要遵循先创建testclass,测试类继承unittest.TestCase的固定格式。例如:

而pytest不需要,可以直接写def test_XXX()即可,写法是python原生。

二、setUp与tearDown(pytest中的fixture)个人觉得fixture更灵活

对应unittest下的setUp与tearDown,pytest中的fixture显然更加灵活。

可以任意自定义方法函数,只要加上@pytest.fixture()这个装饰器,那么被装饰的方法就可以被使用,如图所示的,为当test_login_success执行结束后,执行退出。fixture的详细使用,会在后面单独拿出来讲。

三、pytest的参数化用起来也更方便

pytest可以更好的参数化,如图所示测试登录失败的场景,这里即是4条测试用例。

四、pytest第三方插件非常丰富

pytest具有很多第三方插件,并且可以自定义扩展,比较好用的如pytest-selenium(集成selenium)、pytest-html(完美html测试报告生成)、pytest-rerunfailures(失败case重复执行)等。这里就不细说了,有需要的话下次再单独说,附上地址:

https://pypi.org/

二、为什么要选用pytest以及 pytest与unittest比较的更多相关文章

  1. Pytest学习10-pytest与unittest的区别

    一.用例编写规则 1.unittest提供了test cases.test suites.test fixtures.test runner相关的类,让测试更加明确.方便.可控.使用unittest编 ...

  2. pytest 用 @pytest.mark.usefixtures("fixtureName")或@pytest.fixture(scope="function", autouse=True)装饰,实现类似setup和TearDown的功能

    conftest.py import pytest @pytest.fixture(scope="class") def class_auto(): print("&qu ...

  3. pytest 用 @pytest.mark.usefixtures("fixtureName")装饰类,可以让执行每个case前,都执行一遍指定的fixture

    conftest.py import pytest import uuid @pytest.fixture() def declass(): print("declass:"+st ...

  4. pytest配置文件pytest.ini

    说明: pytest.ini是pytest的全局配置文件,一般放在项目的根目录下 是一个固定的文件-pytest.ini 可以改变pytest的运行方式,设置配置信息,读取后按照配置的内容去运行 py ...

  5. Pytest学习(二) - 断言的使用

    一.前言 学习pytest总会习惯性的和unittest对比使用,自然就断言pytest和unittest也是有些区别的. 二.断言对比 unittest 断言 assertEqual(a, b) # ...

  6. pytest学习笔记(三)

    接着上一篇的内容,这里主要讲下参数化,pytest很好的支持了测试函数中变量的参数化 一.pytest的参数化 1.通过命令行来实现参数化 文档中给了一个简单的例子, test_compute.py ...

  7. pytest pluggy.manager.PluginValidationError: unknown hook 'pytest_namespace'报错处理办法

    一.背景说明 上周测试的同事说pytest+allure环境在别人电脑上跑没问题,在她的环境跑却报错让帮看一下.其实pytest只是听说过allure直接没听过,但不能直接表示不会,祭出百度大法. 看 ...

  8. pytest学习--快速入门

    一.pytest简介 Pytest是python的一种单元测试框架. pytest的特点: 入门简单,文档丰富 支持单元测试,功能测试 支持参数化,重复执行,部分执行,测试跳过 兼容其他测试框架(no ...

  9. 【Python】【自动化测试】【pytest】

    https://docs.pytest.org/en/latest/getting-started.html#create-your-first-test http://www.testclass.n ...

随机推荐

  1. ffmpeg转码flv到avi《转》

    一个视频转码器,则需要对视频进行解码,然后再对视频进行编码,因而相当于解码器和编码器的结合. 下面图列举了一个视频的转码流程. 输入的视频封装格式是flv 视频编码标准是H.264 音频编码标准是AA ...

  2. for in 循环的输出顺序问题

    var data = { '4': 'first', '3': 'second', '2': 'third', '1': 'fourth' }; for (var i in data) { conso ...

  3. linux下编译wpa_supplicant …

    linux下编译wpa_supplicant 收藏 前一段时间只在vs2005下编译成功过.经过近一段时间的琢磨,今天终于在linux下成功编译了wpa_supplicant. 挺简单的事情折腾了这么 ...

  4. tomcat报503 或者无法启动应用

    一般都是配置文件有问题,或者路径问题,或者jvm的参数路径问题.... 总之,报错实在是不清楚!这点比resin差远了!!

  5. 把List<string>转为DataTable

    //把List<string>转为DataTable List<string> myList = new List<string>(); DataTable dt2 ...

  6. 2-JRE System Libraty [eclipse-mars](unbound)

  7. 面试题:cook和session

    1.首先,Cookie与Session存在的目的是什么? 答:二者都是为了保持客户端访问用户与后台服务器的交互状态,之所以为了保持这种状态,一是为了方便一些业务的实现,另一方面就是为了简化后台服务端的 ...

  8. c# 判断网络地址是否存在

    方法一:网络地址存在,有可能可以访问,也有可能不能访问.此方法用来判断地址存在. static bool UrlIsExist(String url) { System.Uri u = null; t ...

  9. 安装CentOS 6网络配置问题

    安装CentOS 6网络配置问题 今天决定把家中的CentOS从5升级至6.但安装完CentOS 6.2之后发现eth0没有像往常一样通过DHCP自动获取IP.打开“/etc/sysconfig/ne ...

  10. mysql_5.6内存过高问题解决

    MySQL 5.6安装完之后,每过一段时间就会莫名其妙挂掉.而且还很难启动.非要重启服务器,才能拉起mysql. 后来分析是由于mysql启动后内存过高,跑一段时间就会由于内存不足而被杀死. 今天分析 ...