pytest用于各种软件测试,是测试自动化的顶级Python测试框架。 开源和易学,该工具可供QA团队,开发团队以及个人实践团队和开源项目使用。 如'断言重写'有用的功能,互联网上的大多数项目,包括像Dropbox和Mozilla,已经从unittest(Pyunit)切换到pytest。 让我们深入探讨一下这个Python框架的特殊之处。
除了Pythonpytest不需要任何复杂的东西。
优点
缺点
pytest使用特殊routine这一事实意味着您必须在兼容性方面做出妥协。 您将能够方便地编写测试用例,但是您将无法将这些测试用例与任何其他测试框架一起使用。
对于编写功能测试用例和开发复杂框架,它比unittest更好,但如果你的目标是开发一个简单的框架,它的优势有点类似于Robot Framework。
https://china-testing.github.io/python_pytest_testing.html
effective test cases.
test automation using pytest and Selenium WebDriver
Unittest或PyUnit是Python附带的单元测试的标准测试自动化框架。 它受到JUnit的高度启发。 断言方法和所有清理和设置例程由基类TestCase提供。 TestCase子类中每个方法的名称以“test”开头。 这允许它们作为测试用例运行。 您可以将load方法和TestSuite类用于组并加载测试。 您可以一起使用它们来构建自定义的测试运行器。 就像Selenium testing with JUnit一样,unittest也能够使用unittest-sml报告并生成XML报告。
优点
作为Python标准库的一部分,使用Unittest有几个优点。
缺点
尽管unittest是默认的测试自动化框架,但其工作原理和命名约定与标准Python代码略有不同,并且需要太多的代码,这使得它成为一个不太优选的Python测试自动化框架。参考:better automation code。
例子:PyUnit and Selenium
我们都了解行为驱动开发,这是最新的基于敏捷的软件开发方法,鼓励开发人员,业务参与者和质量分析师相互协作。 Behave是另一个顶级Python测试框架,允许团队执行BDD测试而不会出现任何复杂情况。 该框架的性质与SpecFlow和Cucumbe非常相似. 测试用例以简单易读的语言编写,然后在执行期间粘贴到代码中。 行为由行为规范设计,然后其他测试方案重用这些步骤。
优点
正在协调处理具有类似功能的不同模块的开发团队。
构建块总是可以执行各种测试用例。
缺点
Behave(Python框架)最适合黑盒测试。 Web测试是一个很好的例子,因为用例可以用简单的语言描述。 但是,对于集成测试或单元测试,行为不是一个好的选择,因为详细程度只会导致复杂测试场景的复杂化。 开发人员以及测试人员推荐pytest-bdd。 它是行为的替代品,因为它使用pytest中的所有优点并实现它以测试行为驱动的场景。
参考:Behave with Selenium
## Lettuce
Lettuce是另一种基于Cucumber和Python的简单易用的行为驱动自动化工具。 生菜的主要目标是专注于行为驱动开发的共同任务,使过程更简单,更有趣。
优点
缺点
使用Lettuce作为Python框架只有一个缺点。 为了成功执行行为驱动的测试,开发团队,QA和利益相关者之间需要进行沟通。 缺席或沟通差距将使流程模糊不清,并且可以从任何团队提出问题。
没有比pytest-bdd更好的替代品了。 pytest的所有强大功能,如紧凑,易于理解的代码都在此框架中实现,并结合了行为驱动测试的详细程度。
Robot Framework主要用于接受测试驱动和验收测试的开发,是最重要的Python测试框架之一。 虽然它是使用Python开发的,但它也可以在基于.net的IronPython和基于Java的Jython上运行 。
优点
缺点
如果您是自动化领域的初学者并且开发经验较少,那么使用Robot作为顶级Python测试框架比pytest或pyunit更容易使用,因为它具有丰富的构建库并且涉及使用更容易的面向测试的DSL。 但是,如果要开发复杂的自动化框架,最好切换到pytest或任何其他涉及Python代码的框架。
如果您是Robot框架的新手,这里有一个文档可以帮助您使用Robot framework with Selenium运行您的第一个自动化脚本。
更多测试框架参见 https://github.com/china-testing/python-api-tesing
在上面的文章中,我们基于不同的测试过程讨论了2019年测试自动化的前5个Python框架。 虽然pytest,Robot框架,unittest用于功能和单元测试,但Lettuce和Behave仅适用于行为驱动测试。 根据所述功能,我们可以得出结论,对于功能测试,pytest是最好的。 但是,如果您是基于python的自动化测试的新手,Robot Framework是一个很好的入门工具。 虽然功能有限,但它可以让您轻松地在赛道上取得领先。 对于基于python的BDD测试,Lettuce和Behave都同样好,但如果你已经有pytest的经验,最好使用pytest-bdd。