单元测试 PHPUnit 如何处理登录依赖?

自《PHPUnit-实现 API 接口的自动化测试》开始,我们在测试上面投入了不少精力,也有了些进展;目前正在使用 Python 进行 API 接口测试。
在测试时,总有些接口会依赖登录;目前 Python 的处理是将 cookie 记录到文件中,有时谈论起来,听口气也不是很方便;单元测试 用例的组织 也是一个问题;
最近 RPC Yar 引入后的问题 引导我们重新审视 PHPUnit,Peter 在 自底向上的 PHP 单元测试 中对 @dataProvider 的使用是一个好契机,说明我们对于单元测试的投入在增强;
- phpunit.de 官网
- phpunit.cn 中文网

本文主要谈一下如何处理登录依赖的问题;

测例的组织问题
  • phpunit.xml 文件;
  • phpunit 的 --testsuite 选项;
  • phpunit 的 --filter 选项;
  • @group 标注,--group,--exclude-group 选项;
为何登录要单独处理?
  • 多个接口可以共享;
  • 可以单独一个类,便于在多个类之间共享;
实现要点
phpunit.xml
  • testsuites 指定目录;
<phpunit>
    <testsuites>
        <testsuite name="Application Test Suite">
            <directory suffix="Test.php">./tests/v14</directory>
        </testsuite>
    </testsuites>
</phpunit>
phpunit 命令行选项和参数
  • phpunit 执行当前目录下由 phpunit.xml 定义的所有 testsuites 符合条件的 test cases;
  • --filter <pattern> Filter which tests to run.
    phpunit --filter 'testC35' 表示只执行符合 testC35 正则表达式的测例;
    要想只执行某一个测例,--filter 就是一个好方法;在编写测例时,节省时间;
  • --testsuite <pattern> Filter which testsuite to run.
    可以指定执行 phpunit.xml 文件中定义的哪个 testsuit;
  • phpunit <path> 直接指定一个路径参数则执行该路径下所有 test cases;
  • --configuration 指定配置文件,默认当前目录下 phpunit.xml;
关于单元测试的一种观点
  • 每个测例都是独立的,依赖性应当充分审慎;
  • 由于测例是独立的,测例可以任何顺序执行;
  • 每个测例应当初始化和销毁自己需要的一切;
    最好的做法就是测例之间最好不要共享对象和状态;
  • SOLIDSRP:Single Responsibility Principle
    Single responsibility
    Open–closed
    Liskov substitution
    Interface segregation
    Dependency inversion
  • 通常测例是按照由上到下执行的,@depends 也是这样的;
    如果被依赖的测例没有执行或者执行失败,则主测例被跳过(skiped),所以 @depends 与顺序无关,不是用来解决顺序问题的;
  • 测例的独立性有助于缺陷定位(defect localization);
  • XUnit Test Patterns
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,569评论 19 139
  • 一、概述 1. 什么是单元测试? 【百度百科】单元测试是对软件中的最小可测单元进行检查和验证。 是开发者编写的一小...
    人在码途阅读 4,747评论 0 7
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 47,273评论 6 342
  • 1.测试与软件模型 软件开发生命周期模型指的是软件开发全过程、活动和任务的结构性框架。软件项目的开发包括:需求、设...
    宇文臭臭阅读 6,873评论 5 101
  • 什么是无奈,无奈就是当你想着如何做一个归人的时候,却发现自己只是个过客。人生百态,世事难料…… 人生也...
    路人二甲一阅读 253评论 0 1

友情链接更多精彩内容