五大自动化测试的Python框架( 二 )

  • 由于涉及到的样板代码(boilerplate code)并不多 , 因此用户能够容易地编写和理解各种测试 。
  • 测试夹具(Fixture)函数常被用来向测试函数添加某个参数 , 并返回不同的值 。 在Pytest中 , 您可以通过使用一个夹具来模块化另外一个 。 同时 , 用户可以使用多个夹具 , 在无需重写测试用例的情况下 , 将测试覆盖到所有参数的组合 。
  • Pytest开发人员通过发布各种实用插件 , 来保持框架的可扩展性 。 例如:pytest-xdist可以在不使用其他测试器的情况下 , 被用于执行并行测试 。 同时 , 单元测试也可以在无需复制任何代码的情况下 , 实现参数化 。
  • 通过为开发人员提供各种特殊的例程 , 它能够使得测试用例的编写更为简单、更不易出错 , 同时代码也会变得更短、更易被理解 。
  • 缺点上述提及的特殊例程 , 也意味着用户必须放弃一定的兼容性 。 虽然方便了用户编写测试用例 , 但是这些用例却无法与任何其他的测试框架一起被使用 。
    Pytest的特点与竞品比较就编写功能性测试用例和开发复杂的框架而言 , Pytest胜过下面将要提到的UnitTest 。 不过 , 它和Robot Framework类似 , 仅适用于开发出简单的测试框架 。
    如果您正在考虑使用Pytest , 请进一步参考《使用Pytest和Selenium WebDriver实现测试自动化》 。
    3.UnitTest/PyUnit受到了JUnit启发的UnitTest/PyUnit , 也是一种标准化的针对单元测试的Python类自动化测试框架 。 它的基类TestCase提供了各种断言方法、以及所有清理和设置的例程 。 因此 , TestCase子类中的每一种方法都是以“test”作为名词前缀 , 以标识它们能够被作为测试用例所运行 。 用户可以使用load方法和TestSuite类来分组、并加载各种测试 。
    当然 , 您也可以通过联合使用 , 来构建自定义的测试运行器 。 正如我们使用Junit去测试Selenium那样 , UnitTest也会用到UnitTest-sml-reporting、并能生成各种XML类型的报告 。
    使用先决条件由于UnitTest默认使用了Python , 因此我们并不需要什么先决条件 。 除了需要具备Python框架的基本知识 , 您也可以额外地安装pip、以及用于开发的IDE工具 。
    优点
    • 开发人员并不需要安装任何其他的模块 。
    • UnitTest是xUnit的衍生产品 , 其工作原理与其他xUnit框架十分类似 。 因此对于那些没有过硬Python背景的人来说 , 也能很快地上手 。
    • 用户能够以更为简单的方式运行单个测试用例 。 您只需在终端上预定好名称 , 该框架便可灵活地执行各种用例的测试 , 并产生精炼的输出 。
    • 它能够在几毫秒内生成各种测试报告 。
    缺点虽然该框架常用snake_case来命名各种Python代码 , 但是由于它源自Junit , 因此仍保留了一些传统的camelCase命名方法 。 这往往会让人产生混淆 。
    由于它过多地支持了抽象方法 , 因此造成了测试代码的目的有时不够清晰 。需要大量的样板代码 。
    PyUnit的特点与竞品比较和部分Python开发人员的观点相似 , 我认为:Pytest能够培养测试人员以非常紧凑的方式编写出更好的自动化代码 , 这一编程习惯 。 尽管UnitTest是Python默认的自动化测试框架 , 但是其工作原理、及命名规则仍与标准的Python代码略有不同 。 同时 , 它也需要太多的样板代码 。 因此该框架并不太受欢迎 。
    4.Behave我们都知道:行为驱动开发(behavior-driven development , BDD) , 是一种基于敏捷软件开发的方法 。 它能够鼓励开发人员、业务参与者和QA人员 , 三者之间的协作 。 作为另一种Python测试框架 , Behave允许团队避开各种复杂的情况 , 去执行BDD测试 。 从本质上说 , 该框架与SpecFlow和Cucumber非常相似 , 常被用于执行自动化测试 。 用户可以通过简单易读的语言来编写测试用例 , 并能够在其执行期间粘贴到代码之中 。 而且 , 那些被设定的行为规范与步骤 , 也可以被重用到其他的测试方案中 。


    推荐阅读