PHP接口自动化测试框架实现

这篇具有很好参考价值的文章主要介绍了PHP接口自动化测试框架实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

我们来看一个简单的PHP实现的超简单的接口。

...

//报名验证
private function apply_verify() {
    $raid = $this->input->get_post('raid');
    $mid = $this->input->get_post('mid');

    if (!$raid || !$mid) {
        $this->ret_json(10021, '参数错误');
    }

    $this->load->model('enlist_model');
    $result = $this->enlist_model->get_enlist_by_raid_mid($raid, $mid, true);
    if (!empty($result)) {
        $this->ret_json(10101, '你已经报过名');
    }
}

说明:

  • 首先,它是一个POST接口。它需要两个参数:raid 和 mid。
  • 然后,判断raid 和 mid 是否为空,为空返回:参数错误。
  • 最后,调用 enlist_model 模型,通过 get_enlist_by_raid_mid方法查询是否为空,如果不为空返回:你已经报过名了。

接下来要做的事情不是写用例,而是构造一条已经报名的数据。

创建 xx_enlist_test_data.php 文件

array(
    'table_name'=>'xx_enlist',
    'data'=>array(
        array('eid'=>1,'raid'=>99,'mid'=>150,'phone'=>'01234567890'),
    )
)

当自动化在执行之前,会先到数据库的 xx_enlist 表插入这条数据,为什么要初始化数据?当然是为了保证接口测试用例的稳定性。比如,我在调用接口时,传入 raid=99, mid=150如果数据库是表空的?那么,用例肯定失败了!如何保证这条用每次运行 100% 成功呢?当然是每次执行之前再对应的表中初始化这么一条数据了!

定义的数据怎么插入到数据库中,当然是有一层解析的,将上面的数据库转成一条SQL语句执行。上面的数据当然比原生的一条插入SQL语句好写。

最后,才是开始写用例。创建interface_enlist_test.php测试文件。

class Interface_enlist_test extends InterfaceTestCase
{
    //初始化数据
    public function db_fixtures()
    {
        return array(
            array(
                'data_file' => 'xx_enlist_test_data.php',
                'truncate'  => true
            ),
        );
    }


    /*
    * 报名验证
    * raid不传
    */
    public function test_post_enlist_raid_null()
    {
        $result = $this -> request('enlist/apply_verify',array(),array('mid'=>150));
        $this->assertEquals($result['status'],'10021');
        $this->assertEquals($result['message'],"参数错误");
    }

    /*
    * 报名验证
    * mid不传
    */
    public function test_post_enlist_mid_null()
    {
        $result = $this -> request('enlist/apply_verify',array(),array('raid'=>99));
        $this->assertEquals($result['status'],'10021');
        $this->assertEquals($result['message'],"参数错误");
    }

    /*
    * 报名验证
    * 用户已报名
    */
    public function test_post_enlist_verify_success()
    {
        $result = $this -> request('enlist/apply_verify',array(),array('raid'=>99, 'mid'=>150));
        $this->assertEquals($result['status'],'10101');
        $this->assertEquals($result['message'],"你已经报过名");
    }
}

这里的用例我就做过多解释了。调用接口写断言。

答疑环节

我知道你们大概会有哪些疑问,接下来,我将试着解答这些疑问。

1、我怎么知道接口调用了哪些表?

首先你要懂PHP编程,然后熟悉Web开发框架,申请代码查看权限,阅读接口处理逻辑,自然就知道接口调用哪些表。

2、看不懂开发代码怎么办?

学呗!我当年也不是一下子就看懂PHP代码的,前后也学了两三个月。

3、往数据库里面插入测试数据,有重复的怎么办?

我们当时的设计是,框架在运行时会自动化的修改被测试的接口项目将数据库指到我本地,也就是说我本地有一个跟测试环境一模一样的数据库,每次在插入数据之前先清空表。
要保证本地数据库的表结构和测试环境是一样的。这其实也不难,开发如果改到表会上传SQL脚本,我只需要在本地数据库执行一下就行了。

4、这样做接口测试有什么好处?

  • 首先,接口用例超级稳定,稳定是自动化测试的 大敌 ,做过自动化的同学知道我在说什么。在保证数据的基础上,如果用例失败了, 100% 是接口逻辑被改动到了。
  • 不依赖接口文档,有几个公司的接口文档是非常详细,且及时维护的?我这种方式不需要接口文档。
  • 不 盲测,盲测就是把接口的参数,每个类型试一遍,然后再排列组合,如果你不知道接口要调用哪个表的哪个字段来判断条件,那么这种盲测依然覆盖不到接口的所有处理逻辑。
  • 当然更装X(玩笑~!),实际情况是你测试接口的水平即全面又深入,比只会用 postman 盲测的同学厉害多了。
  • 反向促进接口代码质量,因为的接口用例编写是基于阅读接口代码的,有一个新来的PHP开发被我叫到面前几次,并直接指出对方的代码逻辑错误之后(分分钟教他怎么做开发,哈哈!),它的接口提测质量一下子提高了许多。

5、这样做接口测试的缺点是什么?

  • 不适合所有团队,不是每个测试都懂开发代码的,比如,我们现在的接口用GO,如果我现在想达到无障碍阅读GO接口代码,也需要较高的学习成本。
  • 不适合大型项目,我之前之所以可在这么玩,主要也是因为PHP项目不大,如果是一个大型项目的话就不适合了,在微服务的架构下,你甚至很难理清一个接口的调用关系。

不过,我仍然认为这是一个优秀的接口测试工程师应该努力的方法。接口测试平台解决的只是测试效率问题如何把一个接口测好?当然是理解好需求,并有能力阅读接口处理逻辑,设计出有效和全面的接口用例。文章来源地址https://www.toymoban.com/news/detail-623807.html

到了这里,关于PHP接口自动化测试框架实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • PHP项目如何自动化测试

    开发和测试 测试和开发具有同等重要的作用 从一开始,测试和开发就是相向而行的。测试是开发团队的一支独立的、重要的支柱力量。 测试要具备独立性 独立分析业务需求,独立配置测试环境,独立编写测试脚本,独立开发测试工具。没有独立性,就没有一切。 测试要有

    2024年01月18日
    浏览(31)
  • 【Python+requests+unittest+excel】实现接口自动化测试框架

    一、框架结构:  工程目录 二、Case文件设计 三、基础包 base 3.1 封装get/post请求(runmethon.py) 3.2 封装mock(mock.py) 四、数据操作包 operation_data 4.1 获取excel单元格中的内容(get_data.py)   4.2 获取excel中每个列(data_config.py) 4.3 解决数据依赖(dependent.py ) 五、工具类包 to

    2024年02月15日
    浏览(27)
  • 如何处理PHP开发中的单元测试和自动化测试?

    如何处理PHP开发中的单元测试和自动化测试,需要具体代码示例 随着软件开发行业的日益发展,单元测试和自动化测试成为了开发者们重视的环节。PHP作为一种广泛应用于Web开发的脚本语言,单元测试和自动化测试同样也在PHP开发中扮演着重要的角色。本文将介绍如何处理

    2024年02月04日
    浏览(29)
  • java基础 - 实现一个简单的Http接口功能自动化测试框架(HttpClient + TestNG)

    已知现在已经用Spring boot框架搭建了一个简单的web服务,并且有现成的Controller来处理http请求,以之前搭建的图书管理服务为例,BookController的源码如下: 在搭建一个Http接口功能自动化测试框架之前,我们需要思考几个问题: 1、http请求的发送,使用什么实现? 2、接口返回的

    2024年02月05日
    浏览(39)
  • 自动化测试(三):接口自动化pytest测试框架

    API:Application Programming Interface 接口自动化按照自动化的工具可分为 基于 接口测试工具 的接口自动化 eg1:Postman+Newman+git/Svn+Jenkins(基于Javascript语言)接口自动化 Postman :创建和发送 API 请求,并对响应进行断言和验证。 Newman : Postman 的命令行工具,它允许测试人员在没有界

    2024年02月10日
    浏览(42)
  • 接口自动化测试框架

    另外,现阶段流行推荐使用:Python+unittest+requests+HTMLTestRunner框架   Java Rest-assured 是使用代码来实现接口的请求,封装业务流程,对于公司的业务支持比较高,灵活度很强,可以通过代码的方式打造自己公司的接口自动化框架,上手有点难度,需要有Java 编程基础,才可以使用

    2024年02月04日
    浏览(29)
  • 接口自动化测试框架设计

    测试系统间接口的一种测试,测试的对象主要是接口,主要是测试外部系统与所测试系统之间以及内部系统之间的交互点。 前后端分离,通过测试保证服务端的正确性 基于安全考虑,前端验证很容易跳过。 BUG更容易定位 自动化测试落地性价比更高,比UI更稳定 测试提前,降

    2024年01月19日
    浏览(41)
  • pytest接口测试自动化框架

    目录 pytest简介及安装 pytest的使用规则 pytest运行方式 主函数方式 命令行方式 跳过、标记及预期失败特殊场景处理 pytest前后置、夹具 pytest高级用法fixture pytest接口断言 pytest结合allure-pytest生成allure测试报告         谈起用例管理框架:python中的unittest、pytest;java中的test

    2024年02月06日
    浏览(71)
  • postman接口自动化测试框架实战!

    把人对软件的测试行为转化为由机器执行测试行为的一种实践。 例如GUI自动化测试,模拟人去操作软件界面,把人从简单重复的劳动中解放出来。 本质是用代码去测试另一段代码,属于一种软件开发工作,已经开发完成的用例还必须随着被测试对象的改变而更新,因此,还

    2024年02月11日
    浏览(47)
  • 从零搭建完整python自动化测试框架(UI自动化和接口自动化

    总体框架 PO模式、DDT数据驱动、驱动 框架技术选择 框架运行结果 各用例对应的定义方式(PO/DDT) 测试执行结果 从零开始搭建项目 一、开发环境搭建 二、新建项目 三、基础功能实现 1. 配置功能实现(Conf) 2. 日志功能实现(Log) 3. 读取EXCEL实现(data) 4. 邮件发送实

    2024年02月07日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包