热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

codeception(4)Yii2下创建AcceptanceTests(验收测试)

以登录为例创建一个验收测试,名为IndexPage打开文件里的的代码是

以登录为例创建一个验收测试,名为IndexPage
图片描述
打开文件里的的代码是

use tests\codeception\frontend\AcceptanceTester;
$I = new AcceptanceTester($scenario);
$I->wantTo('perform actions and see result');

文件创建成功了,接下来我们要想一下登陆的流程
1.访问登陆页面
2.填写登陆信息
3.点击登陆按钮
既然是验收测试,那我们测试的数据肯定不止一种情况,并且页面上应该返回错误提示,才算正确
1.什么都不填,直接提交,页面上应该提示不能为空
2.填写错误的信息,提交,页面上应该提示,用户名或密码不正确
3.填写正确的信息,提交,跳转至能明显看出用户是已登录状态的页面

访问登陆页面,假设我们的登陆地址是http://login.test.com,我们找到对应的suite.yml文件,
每种actor都对应一个suite.yml文件,在tests/codeception/frontend下有一个名为acceptance.suite.yml的文件,这个文件就是验收测试的配置文件,我们更改url

# Codeception Test Suite Configuration# suite for acceptance tests.
# perform tests in browser using the Selenium-like tools.
# powered by Mink (http://mink.behat.org).
# (tip: that's what your customer will see).
# (tip: test your ajax and Javascript by one of Mink drivers).# RUN `build` COMMAND AFTER ADDING/REMOVING MODULES.class_name: AcceptanceTester
modules:enabled:-PhpBrowser-tests\codeception\common\_support\FixtureHelper
# you can use WebDriver instead of PhpBrowser to test Javascript and ajax.
# This will require you to install selenium. See http://codeception.com/docs/04-AcceptanceTests#Selenium
# "restart" option is used by the WebDriver to start each time per test-file new session and COOKIEs,
# it is useful if you want to login in your app in each test.
# - WebDriverconfig:PhpBrowser:
# PLEASE ADJUST IT TO THE ACTUAL ENTRY POINT WITHOUT PATH INFOurl: http://login.test.com
# WebDriver:
# url: http://localhost:8080
# browser: firefox
# restart: true

配置好了登陆地址,我们就可以开始写代码了

$I = new AcceptanceTester($scenario);
$I->wantTo('perform actions and see result');
$I->amOnPage('/');
$I->see('登录'); //找到登录两个字,说明访问的登陆地址是正确的

测试第一种情况,什么都不填

$I->amGoingTo('submit login form with no data');
$I->fillField('input[name="LoginForm[t_email]"]', '');
$I->fillField('input[name="LoginForm[t_password]"]', '');
$I->click('登录');//点击登录按钮
$I->expectTo('see validations errors');
$I->see('用户名不能为空。', '.help-block');//希望看到用户名的错误提示
$I->see('密码不能为空。', '.help-block');//希望看到密码的错误提示

第二种情况,填写错误的登陆信息

$I->amGoingTo('try to login with wrong credentials');
$I->fillField('input[name="LoginForm[t_email]"]', 'admin');
$I->fillField('input[name="LoginForm[t_password]"]', 'wrong');
$I->click('登录');//点击登录按钮
$I->expectTo('see validations errors');
$I->see('用户名或密码不正确。', '.help-block');//希望看到的错误提示

第三种情况,填写正确的信息

$I->amGoingTo('try to login with correct credentials');
$I->fillField('input[name="LoginForm[t_email]"]', 'info@aim-china.com');
$I->fillField('input[name="LoginForm[t_password]"]', '888888');
$I->click('登录');
$I->expectTo('see that user is logged');
$I->seeLink('退出');//希望看到退出链接
$I->dontSeeLink('登录');//不希望看到登录链接

运行测试
图片描述
全部运行成功,在测试中,只要有一个断言不成功,就会显示失败,

在执行测试的时候,可以生成报告
将运行结果以xml的形式保存下来,黄字的部分就是xml的位置
codecept run acceptance IndexPageCept --xml --html

生成的报告会在tests/codeception/frontend/_output下
图片描述

执行下面这句可以知道更多codeception的指令

codecept help run

参考文章:http://blog.csdn.net/huoba1/article/details/41719699



推荐阅读
  • Servlet多用户登录时HttpSession会话信息覆盖问题的解决方案
    本文讨论了在Servlet多用户登录时可能出现的HttpSession会话信息覆盖问题,并提供了解决方案。通过分析JSESSIONID的作用机制和编码方式,我们可以得出每个HttpSession对象都是通过客户端发送的唯一JSESSIONID来识别的,因此无需担心会话信息被覆盖的问题。需要注意的是,本文讨论的是多个客户端级别上的多用户登录,而非同一个浏览器级别上的多用户登录。 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 本文讨论了如何在codeigniter中识别来自angularjs的请求,并提供了两种方法的代码示例。作者尝试了$this->input->is_ajax_request()和自定义函数is_ajax(),但都没有成功。最后,作者展示了一个ajax请求的示例代码。 ... [详细]
  • RouterOS 5.16软路由安装图解教程
    本文介绍了如何安装RouterOS 5.16软路由系统,包括系统要求、安装步骤和登录方式。同时提供了详细的图解教程,方便读者进行操作。 ... [详细]
  • 网络请求模块选择——axios框架的基本使用和封装
    本文介绍了选择网络请求模块axios的原因,以及axios框架的基本使用和封装方法。包括发送并发请求的演示,全局配置的设置,创建axios实例的方法,拦截器的使用,以及如何封装和请求响应劫持等内容。 ... [详细]
  • Hibernate延迟加载深入分析-集合属性的延迟加载策略
    本文深入分析了Hibernate延迟加载的机制,特别是集合属性的延迟加载策略。通过延迟加载,可以降低系统的内存开销,提高Hibernate的运行性能。对于集合属性,推荐使用延迟加载策略,即在系统需要使用集合属性时才从数据库装载关联的数据,避免一次加载所有集合属性导致性能下降。 ... [详细]
  • 本文介绍了Java后台Jsonp处理方法及其应用场景。首先解释了Jsonp是一个非官方的协议,它允许在服务器端通过Script tags返回至客户端,并通过javascript callback的形式实现跨域访问。然后介绍了JSON系统开发方法,它是一种面向数据结构的分析和设计方法,以活动为中心,将一连串的活动顺序组合成一个完整的工作进程。接着给出了一个客户端示例代码,使用了jQuery的ajax方法请求一个Jsonp数据。 ... [详细]
  • Apache Shiro 身份验证绕过漏洞 (CVE202011989) 详细解析及防范措施
    本文详细解析了Apache Shiro 身份验证绕过漏洞 (CVE202011989) 的原理和影响,并提供了相应的防范措施。Apache Shiro 是一个强大且易用的Java安全框架,常用于执行身份验证、授权、密码和会话管理。在Apache Shiro 1.5.3之前的版本中,与Spring控制器一起使用时,存在特制请求可能导致身份验证绕过的漏洞。本文还介绍了该漏洞的具体细节,并给出了防范该漏洞的建议措施。 ... [详细]
  • 安装oracle软件1创建用户组、用户和目录bjdb节点下:[rootnode1]#groupadd-g200oinstall[rootnode1]#groupad ... [详细]
  • Vue基础一、什么是Vue1.1概念Vue(读音vjuː,类似于view)是一套用于构建用户界面的渐进式JavaScript框架,与其它大型框架不 ... [详细]
  • 一、Struts2是一个基于MVC设计模式的Web应用框架在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts2优点1、实现 ... [详细]
  • 原因:在vm上装7.9到sp3,打补丁到1644,再往后别打了,就打就打不开终端了,这个是java安全问题,以下只是终端的一些命令,记录一下:在系统下查看当前的串口:lsdev-C ... [详细]
  • XMLhttpREquest_Ajax技术总结之XmlHttpRequest
    Ajax1、 什么是ajax   ... [详细]
  • 我将SpringMVC升级到Spring3.2.5.我的一些剩余调用即使存在,也会返回无法识别的字段异常.这是错误.Resolvingexceptionfrom ... [详细]
author-avatar
王漻_957
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有