软件测试框架之unittest与pytest的对比-

软件测试框架之unittest与pytest的对比-,第1张

这篇 文章 是关于 自动化测试 框架的,算是一种传统的 测试框架 与新测试框架的一种对比吧( unittest 与pytest)。如果正在学习自动化测试的小伙伴一定不要错过这篇文章了。

Unittest

unittest是 python 标准库,自带的 单元测试 框架,有时候也被称为PyUnit。类似于java的 JUnit

Pytest

pytest是python第三方单元测试库,功能非常的丰富,也比较成熟,比unittest更简洁方便。

下面会从是否需要安装,用例编写规则,用例分类执行,前置和后置,参数化,断言,报告,是否有失败重跑机制等多维度来分析unittest与pytest测试框架的区别;

一、是否需要安装

Unittest是标准库,所以是不需要安装的。

Pytest是第三方库,所以使用前需要安装:pip install pytest

   二、用例编写规则

1、Unittest

· 首先需要导入unittest(import unittest)

· 测试类必须继承unittest.TestCase

· 测试方法必须以”test_”开头

· 测试类必须要有unittest.main()方法

2、Pytest

· 测试文件必须以”test_”开头或”_test”结尾

· 测试方法必须要”test_”开头

· 测试类的命名要以”Test”开头

· 运行不需要main方法

三、用例分类执行

1、Unittest

默认执行的是全部的 测试用例 ,但也可以通过加载testsuit执行部分测试用例

   2、Pytest

通过@pytest.mark来标记类和方法,pytest.main加入参数(“-m”)只运行标记的类和方法

   四、用例的前置和后置

1、Unittest

unittest提供了setUp/tearDown,在每个用例运行前执行一次,运行结束后执行一次。

SetUpClass和tearDownClass,用例执行前,用例执行结束后,只运行一次。

2、Pytest

pytest提供了模块级,类级,方法级等setup/teardown,比unittest的setUp/tearDown要更丰富灵活。

· 模块级(setup_module/teardown_module)开始于模块始末,全局的,整个模块开只运行一次,优先于测试用例。

· 函数级(setup_function/teardown_function)只对函数用例生效(不在类中)

· 类级(setup_class/teardown_class)只在类中前后运行一次(在类中),只针对此类生效

· 方法级(setup_method/teardown_method)开始于方法始末(在类中),定义在类里面,每个用例都执行一次

五、参数化

1、Unittest

需要依赖DDT库。

2、Pytest

使用@pytest.mark.parametrize装饰器。

   六、断言

1、Unittest

unittest提供了很多断言方式。

如:assertEqual、assertIn、assertTrue、assertFalse

2、Pytest

pytest提供assert表达式,简单,方便。

七、报告

1、Unittest

unittest使用HTMLTestRunnerNew库

2、Pytest

pytest有pytest-HTML、allure插件

八、失败是否重跑

1、Unittest

unittest没有提供这个功能

2、Pytest

Pytest通过pytest-rerunfailures插件是支持用例执行失败重跑的,

好了,分析完unittest和pytest它们的区别以后,咱们再来做一个简单的总结:

Unittest和Pytest这两个都属于python的单元测试框架,也是目前用的比较多的自动化测试框架。

Unittest呢是Python自带的,比较传统的测试框架,提供的插件少,用例格式比较复杂。Pytest相对来说,更加简单方便 ,兼容性比较强,插件也很丰富。用例出错了还可以重跑,非常的灵活,效率要比Unittest更高。

第一种:Robot Framework

作为最重要的python测试框架之一,Robot Framework主要被用在测试驱动类型的开发与验收中。虽然由python开发而来,但是它也可以在基于.net的Ironpython和基于Java的Jython上运行。同时,作为一个python框架,Robot还能够兼容诸如Windows、MacOS、Linux等平台。

在使用Robot Framework之前,需要先安装python2.7.14及以上版本,在这里推荐大家使用python3.6.4,以确保适当的注解能够被添加到代码段中,并能够跟踪程序的更改,同时,您还需要安装python包管理器--pip。

第二种:Pytest

适用于多种软件测试的Pytest,是另一个python类型的自动化测试框架。凭借着开源和易学的特点,该工具经常被QA团体、开发团体、个人团体以及各种开源项目所使用。鉴于Pytest具有断言重写之类的实用功能,许多大型互联网应用,如Dropbox、Mozilla,都已经从下面将要提到的unittest切换到了Pytest之上。

除了基本的python知识,用户并不需要更多的技术储备。另外,用户只需要有一台带有命令行界面的测试设备,并且安装好了python包管理器以及可用于开发的IDE工具。

第三种:UnitTest/PyUnit

受到Junit启发的UnitTest/PyUnit,也是一种标准化的针对单元测试的python类自动化测试框架。它的基类TestCase提供了各种断言方法、以及所有清理和设置的例程。因此,TestCase子类中的每一种方法都是以test作为名词点缀,以标识它们能够被作为测试用例所运行。用户可以使用load方法和TestSuite类来分组、并加载各种测试。当然,也可以通过联合使用,来构建自定义的测试运行器。正如我们使用Junit去测试Selenium那样,UnitTest也会用到unittest-sml-reporting,并能生成各种XML类型的报告。

第四种:Behave

行为驱动开发是一种基于敏捷软件开发的方法。它能够鼓励开发人员、业务参与者和QA人员,三者之间的协作。python测试框架Behave允许团队避开各种复杂的情况,去执行BDD测试。从本质上说该框架与SpecFlow和Cucumber相似,常被用于执行自动化测试。用户可以通过简单易读的语言来编写测试用例,并能够在其执行期间粘贴到代码之中。而且,那些被设定的行为规范与步骤,也可以被重用到其他的测试方案中。

第五种:Lettuce

Lettuce是另一种基于Cucumber和python的行为驱动类自动化工具。Lettuce主要专注于那些具有行为驱动开发特性的普通任务。它不但简单易用,而且能够使得整个测试过程更流畅、甚至更有趣。

您需要安装带有IDE的python2.7.14及以上版本。当然,您也可以使用pycharm或任何其他IDE工具。同时,您还需要安装python包管理器。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/6062742.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-13
下一篇 2023-03-13

发表评论

登录后才能评论

评论列表(0条)

保存