play手把手教你创建一个博客项目10完整的应用程序测试

合集下载

play手把手教你创建一个博客项目-05.添加图形验证码功能captcha

play手把手教你创建一个博客项目-05.添加图形验证码功能captcha

05.添加图形验证码功能captcha

由于谁都可以在我们的博客里发表评论,因此我们需要对其进行保护,以防止垃圾邮件入侵。最简单的方式就是在窗体里添加一个图形验证码(captcha)功能。

生成验证码图形

下面,我们将开始学习如何使用play来生成验证码图形。通常情况下,除了其能够返回一个二进制流来代替HTML响应外,它就是一个action。

既然play是一个全堆栈的web框架,那么我们将试着为web应用程序的大多数特定需求引入内建的概念,生成图形验证码功能就是其中之一。我们可以使用play.libs.Images工具来简单生成一个验证码图形,然后写到HTTP响应中。

通常情况下,我们将从一个简单的实现开始,首先在Application控制器里添加一个captcha action:

public static void captcha() {

Images.Captcha captcha = Images.captcha();

renderBinary(captcha);

}

请注意,我们可以直接把captcha对象传递给renderBinary()方法,这是因为Images.Captcha类已经实现了java.io.InputStream接口。

别忘了导入play.libs.*。

接下来在/yabe/conf/routes文件里添加一条新路由:

GET /captcha Application.captcha 打开http://localhost:9000/captcha地址可以验证captcha action是否正常:

如何在GooglePlay上发布和推广手机应用

如何在GooglePlay上发布和推广手机应用

如何在GooglePlay上发布和推广手机应用

章节一:准备工作

在Google Play上发布和推广手机应用之前,需要进行一些准

备工作。首先,确定应用的目标受众和定位,了解市场需求并确

保应用在特定领域有竞争优势。其次,进行市场调研,了解类似

应用的特点和用户反馈,从而提升自己的应用设计和功能。同时,需要考虑应用名称、图标和描述等元素,以便吸引用户的关注。

章节二:开发和测试

在发布之前,必须开发和测试应用程序,以确保其正常运行且

没有大的问题。在开发过程中,应密切关注应用的性能、安全性

和稳定性。测试阶段可以通过模拟用户行为、检查应用的界面和

功能,以及进行性能和兼容性测试来验证应用的质量。此外,还

应确保应用在不同设备和操作系统版本上都能正常运行。

章节三:遵循Google Play的政策和要求

在发布应用之前,开发者需要遵循Google Play的政策和要求。这包括确保应用不包含任何违法或有害内容,不侵犯他人的知识

产权,并遵循隐私政策和广告行为准则等。开发者还应遵循Google Play关于应用标识、图标、描述和截图等的规定,以确保

应用在商店中展示时具有吸引力。

章节四:发布应用

发布应用时,需要先登录到Google Play开发者控制台,并创建一个开发者账户。然后,填写必要的应用信息,如应用名称、描述、图标和截图等。在此过程中,应尽量准确地描述应用的功能、特点和适用范围,以便吸引目标用户。同时,要选择适当的应用类别和定价策略,以满足市场需求。

章节五:应用推广

在发布应用之后,关注应用的推广至关重要。首先,可以利用Google Play上的App Store优化(ASO)来提升应用的搜索排名。这包括选择恰当的关键词、优化应用标题和描述、增加好评和下载量等。此外,可以借助社交媒体、博客和新闻稿等渠道进行推广,吸引更多用户的关注。定期更新应用,回应用户的反馈和需求,也是提升应用知名度和使用度的关键。

Play! Framework 2 Web开发教程

Play! Framework 2 Web开发教程

Play Framework Web开发教程(1):概述及环境安装

Play Framework 基于Akka(并行应用开发包,这个开发包的一个显著特定是基于Actor模型,并行运算是这个某些的基本特点,可以避免由于一般多线程开发不正确使用同步或互锁造成的程序死锁等问题)。采用MVC模型(非常类似于 MVC4),缺省支持REST和JSON,支持编译CoffeeScript和LESS代码。支持数据库编程,并且可以和Slick(类似于LINQ的数据库接口)。开发可以使用Eclipse ,Intellij IDEA或是Sbt(Typesafe 自带的编译工具)。

本教程采用Eclipse 开发环境配合sbt 工具开发。

下面简单介绍一下Play Framework开发环境的搭建,(Windows开发环境)。

1首先需要安装Java SDK,建议安装最新版Java SDK ,64位系统安装64位Java SDK。

2安装Scala编译工具sbt .

3安装Scala开发环境

4安装Scala IDE for Eclipse

5下载解压Play Framework,目前版本为2.1.3

安装好之后,注意把这些命令行所在的目录添加的系统环境变量PATH中,然后到到命令行中执行

play new myFirstPlayApp

在提示选择语言(Java或Scala)选择Scala

然后进入新创建myFirstPlayApp ,运行play run ,如果编译成功,将显示下面类似的消息,表示新创建的Web应用运行在端口9000

这篇文章教你开发一个Python桌面应用程序

这篇文章教你开发一个Python桌面应用程序

这篇⽂章教你开发⼀个Python桌⾯应⽤程序

IronPython和最新的Visual Studio 2019使这⼀切成为可能,它们使Python桌⾯应⽤程序可以与WinForms控件⼀起使⽤。更重要的是,套件拥有现成的⼀些功能来帮助您实现想要的功能!

Iron Python

IronPython是Python强⼤的开源版本,它是在Microsoft .NET框架上运⾏的Python编程语⾔的改编,IronPython可以使⽤.NET Framework和Python库,⽽其他.NET语⾔也可以轻松使⽤Python代码。

安装最新版本的IronPython之后,您可以打开Visual Studio 2019,该Studio带有⽤于“ IronPython Windows Forms Application”的内置模板项⽬,并创建您的第⼀个应⽤程序。

如何将Telerik RadGridView与现代Fluent主题集成到您的应⽤程序中

⾸先,您需要安装Telerik UI for WinForms UI组件套件 - 您可以从此处,然后将所需的Telerik程序集添加到项⽬⽂件夹中,以使⽤WinForms的RadGridView、FluentTheme和RadChartView(spoiler alert,稍后将需要它)控件。

要在应⽤程序中引⽤⼆进制⽂件,请导⼊clr库,然后使⽤⽅法。在这⾥,您可以看到如何添加⽰例应⽤程序所需的参考和⽤法。

import clr

import random

clr.AddReference('System.Drawing')

Google GAE 搭建博客

Google GAE 搭建博客

GAE,(全称Google App Engine),是Google云计算的一部分,是一个互联网应用服务引擎。你可以使用GAE的API开发互联网应用,在Google 的基础架构上运行你的网络应用程序。GAE应用程序易于构建和维护,并可根据访问量和数据存储需要的增长轻松扩展,而不用担心带宽和主机问题。使用GAE,只需上传你的应用程序,它便可立即为你的用户提供服务。使用GAE是免费的,每个用户可以拥有500MB的存储空间,以及支持每月500万PV,这对普通的用户来说绰绰有余。当然利用GAE搭建博客有优点,也有缺点。

大家可以预览下我的博客地址:

优点:

1、免费使用,空间流量充足;

2、自主管理,不受限制,没人删你的贴或者给你定义敏感词,充分享受自由折腾的乐趣;

3、稳定高效的服务,有Google强大的服务器做支撑(100万+?),估计GFW也奈何不了;

缺点:

1.创建过程麻烦(其实也没有多麻烦哈*^__^*);

2.和虚拟主机不同,GAE修改文件后需要上传覆盖。

下面介绍如何利用GAE平台架设专属于自己的BLOG。

一、运行GAE 的准备工作

安装Google App Engine SDK for Python

传送门:/intl/en/appengine/downloads.html 安装Python

传送门:/download/

请安装Python 2.x的版本!如果安装3.x的版本,GAE是不干活的。

二、申请注册GAE

这里我默认你已经拥有Google帐号(基本都有的吧?没有的自己去申请),到GAE的页面去注册一个帐号。首次创建GAE会有个欢迎页面。

play手把手教你创建一个博客项目完整的应用程序测试

play手把手教你创建一个博客项目完整的应用程序测试

p l a y手把手教你创建一个博客项目完整的应用

程序测试

Document serial number【NL89WT-NY98YT-NC8CB-NNUUT-NUT108】

10.完整的应用程序测试

现在,我们已经结束了博客引擎的编码工作,但对项目来说还没有完成,为了让我们的代码能够完全正确的工作,我们还需要对项目进行测试。

当然,我们之前已经为yabe的模型层功能书写的单元测试,并且确信博客引擎的核心功能已经进行了完好的测试,但是对于一个web应用程序来说模型层只是其中的一部分,我们还需要确定web接口能否按预期的目标一样正常工作。也就是说还需要测试yabe博客引擎的控制器层,甚至需要对UI自身进行测试,比如我们的JavaScript代码。

测试控制器部分

Play提供了一种功能,就是使用JUnit来直接测试应用程序的控制器。我们把这些测试叫做‘功能性测试’,这是因为我们打算测试web应用程序的完整功能。

基本上,一个功能性测试将直接调用Play的ActionInvoker,和一个HTTP请求相似。因此我们需要给出一个HTTP方法、一个URI和多个HTTP参数。 Play 之后会路由这些请求,调用相应的action,并且回发到填写的响应(filled response)。之后,你就可以对之进行分析,以检查响应内容是否你所预期的。

接下来让我们书写第一个功能性测试代码,打开 yabe/test/单元测试:

import .*;

import .*;

import .*;

import models.*;

public class ApplicationTest extends FunctionalTest {

python 应用界面开发实例

python 应用界面开发实例

python 应用界面开发实例

Python 是一种非常流行的编程语言,它可以用于开发各种类型的应用程序,包括应用界面开发。在 Python 中,有几种流行的库和框架可以用来开发应用界面,其中最流行的是 Tkinter、PyQt 和wxPython。我会简要介绍一下这些库的使用,并举例说明它们在应用界面开发中的实际应用。

首先,Tkinter 是 Python 自带的标准库,它提供了简单而直观的方式来创建基本的图形用户界面。下面是一个简单的 Tkinter 应用界面开发实例:

python.

import tkinter as tk.

def on_button_click():

label.config(text="Hello, " + entry.get())。

app = ()。

app.title("Simple App")。

label = bel(app, text="Enter your name: ")。

label.pack()。

entry = tk.Entry(app)。

entry.pack()。

button = tk.Button(app, text="Submit",

command=on_button_click)。

button.pack()。

app.mainloop()。

上面的代码创建了一个简单的窗口应用程序,用户可以在输入框中输入姓名,点击按钮后会显示一个问候语。这个例子展示了如何使用 Tkinter 创建一个基本的应用界面。

其次,PyQt 是另一个流行的 Python 应用界面开发框架,它提供了丰富的功能和灵活的界面设计选项。下面是一个简单的 PyQT 应用界面开发实例:

移动应用开发实验文档

移动应用开发实验文档

移动应用开发实验文档

实验目的:

本实验旨在让学生了解移动应用开发的基本流程和技术,并通过实践操作,掌握移动应用的开发方法和技巧。

实验环境:

1. 开发工具:Android Studio

2. 编程语言:Java、XML

3. 设备:Android手机或模拟器

实验内容:

1. 实验一:创建一个简单的Hello World应用

- 在Android Studio中创建一个新项目

- 修改主界面布局,添加一个文本视图,并设置其内容为"Hello World"

- 运行应用,在手机或模拟器上查看效果

2. 实验二:添加按钮与点击事件

- 修改主界面布局,添加一个按钮,并设置其文本内容为"点击我"

- 为按钮添加点击事件,当用户点击按钮时,弹出一个提示框显示"按钮被点击了"

3. 实验三:使用Intent跳转到另一个Activity

- 创建一个新的Activity,并在其布局中添加一个文本视图

- 在主界面布局中添加一个按钮,点击按钮时跳转到新的Activity

- 在新的Activity中显示一段文本内容

4. 实验四:使用RecyclerView显示数据列表

- 创建一个数据类来保存列表项的数据

- 创建一个Adapter类来绑定数据到RecyclerView

- 在主界面布局中添加一个RecyclerView,显示一组列表项数据

实验步骤:

1. 下载并安装Android Studio,在电脑上配置好开发环境

2. 打开Android Studio,创建一个新项目,选择空活动模板

3. 在主界面布局中添加视图组件,编写布局文件

4. 编写Java代码,实现按钮点击事件的逻辑和页面跳转等功能

手把手教你进行Web应用测试

手把手教你进行Web应用测试

手把手教你进行Web应用测试Web应用测试是一项关键的活动,它可以确保在发布到生产环境之前,应用程序能够按照预期运行。本文将手把手地介绍如何进行Web 应用测试,以帮助你更好地理解和掌握这一技能。

一、测试环境的搭建

在进行Web应用测试之前,首先需要搭建一个合适的测试环境。测试环境应包括与生产环境相似的硬件和软件配置,并且需要确保能够进行各种测试类型,如功能测试、性能测试和安全测试等。另外,还需要准备一份测试计划,明确测试的目标、范围和时间安排。

二、功能测试

功能测试是验证Web应用程序是否满足指定的需求和规范的测试类型。在进行功能测试时,可以按照以下步骤进行操作:

1. 确定测试用例:根据需求和规范,编写一系列测试用例来验证各个功能点是否正常工作。

2. 执行测试用例:按照测试计划,逐一执行测试用例,并记录测试结果。

3. 分析测试结果:根据测试结果,判断功能点是否通过测试,如果未通过,则需要进行错误定位、修复和重新测试。

三、性能测试

性能测试是评估Web应用程序在不同负载下的性能表现的测试类型。在进行性能测试时,可以按照以下步骤进行操作:

1. 定义性能指标:确定评估性能的指标,如响应时间、吞吐量和并

发用户数等。

2. 设计负载模型:根据实际情况,设计一系列负载模型,模拟不同

的用户行为和访问量。

3. 进行性能测试:使用性能测试工具,对Web应用程序进行负载测试,并记录各项性能指标。

4. 分析性能结果:根据性能测试结果,评估Web应用程序在不同负载下的性能表现,并进行性能优化。

四、安全测试

安全测试是评估Web应用程序的安全性的测试类型。在进行安全测试时,可以按照以下步骤进行操作:

Python语言游戏开发实战项目教程

Python语言游戏开发实战项目教程

Python语言游戏开发实战项目教程Python语言是一种广泛应用于软件开发和数据分析的高级编程语言。它的简洁性和易读性,使得它成为了入门级开发者和高级开发人员的

首选语言之一。除了应用于软件开发和数据分析,Python语言还可以

用于游戏开发。在本教程中,我们将深入探讨Python语言在游戏开发

领域的应用。

接下来,我们将介绍一个Python语言游戏开发实战项目,以帮助读者更好地理解和学习如何在Python语言中开发游戏。

项目概述:

本项目旨在创建一个简单的文字冒险游戏,玩家可以通过控制角色

去探索一个神秘的世界,并与其他角色进行互动。在游戏中,玩家将

面临各种决策和挑战,他们的选择将会影响游戏的进程和结局。

项目准备工作:

在开始游戏开发之前,我们需要安装Python开发环境,并确保我们拥有必要的开发工具和资源。具体步骤如下:

1. 下载Python:从官方网站下载并安装Python最新版本的稳定版。

2. 安装开发工具:在Python开发过程中,我们建议使用一款集成开发环境,比如PyCharm,它可以提供代码编辑、调试和管理等功能。

3. 学习Python基础知识:在游戏开发过程中,我们需要掌握

Python语言的基本语法和常用库的使用。可以通过在线教程、书籍或

者视频教程来学习Python语言的基础知识。

项目开发步骤:

一、游戏框架的搭建

1. 创建游戏窗口:使用Pygame库创建一个窗口来显示游戏界面。

2. 处理游戏事件:使用Pygame库中的事件处理函数来捕获和处理

玩家的输入事件。

3. 绘制游戏画面:使用Pygame库提供的绘图函数来绘制游戏中的

如何开发一个完整的Web应用程序

如何开发一个完整的Web应用程序

如何开发一个完整的Web应用程序在当今信息化时代,Web应用程序扮演着极为重要的角色。在互联网的日益普及下,越来越多的人开始依赖Web应用程序,使用Web应用程序观看视频、接收邮件、在线购物等等日常活动。而这些便利的背后,是一个个优秀的Web应用程序的“功劳”。那么如何开发一个完整的Web应用程序呢?本文将与您分享一些相关的知识和经验。

一、理清思路,规划架构

在开发Web应用程序之前,应首先理清思路,规划好架构。应该要做好对系统整体的分析和设计,包括需求分析、数据建模、数据表设计、功能模块划分等。在此基础上,应该要画好系统的框架图、数据流程图、模块流程图等。此外,构建非常重要的一个环节就是选择适合的技术栈,根据项目的实际情况来确定技术的选择和组合方案,为后续开发打下坚实的基础。

二、编写代码,做好编程

编写代码是整个项目的核心内容,在这个阶段需要对前端效果、后台开发、数据库设计等做好宏观的规划和设计。然后再针对具

体环节进行细致化的编码。在编程的过程中,可以使用一些代码

规范、开发流程类的工具来帮助我们提高代码开发效率和代码质量。当然,对于已经建立的规范和流程,需要逐步的迭代优化,

不断提高代码的质量。

三、测试调试,不断优化

测试是一个不可或缺的环节,应该要在编程完成之后及时地进

行测试。测试环节的目的是发现问题、排除问题以及预防问题,

从而确保程序的稳定性和正确性。针对测试中发现的问题,应该

采取积极有效的措施进行修复和调试,包括开发调试工具、制定

问题跟踪流程、建立测试用例等。

四、发布上线,保障运行

项目11 个人博客制作

项目11 个人博客制作
<div class="item"> <div class="title"></div> <div class="status"></div> <div class="content"></div>
</div> <div class="item">
<div class="title"></div> <div class="status"></div> <div class="content"></div> </div> </div> </div> </body>
任务2制作博客首页
<body> <div class="side-bar">
命令<d行iv c方las式s=创"he建ad用er"户></div>
<div class="nav"></div> <div class="tag-list"></div> </div> <div class="main"> <div class="article-list">

Play框架教程

Play框架教程
测试驱动开发(如果你喜欢它的话) 集成的测试可以让你更容易的去进行测试驱动开发,你可以写下所有繻型的测 试,从简单的集成测试到完整 的acceptance 测试,然后直接在浏览器中使用Selenium运行。代码覆盖率也
会考虑到。
( Word to PDF - 未滨册 ) http://www. word-to-pdf.abdio.com/
You have no unread emails! </c:otherwise> </c:choose>
我们认为你应该更倾向于这样写
bc. You have ${emails.unread ?: 'no'} ${emails.unread?. pluralize('email')} ! Play模板使用的 表达式语言是Groovy,它和Java语滕一致, Play使用这些模板绻统区渲染HTML请湂,你可以使用它去产生其他格式的文 档例如 email信息,JSON输出等。.
10
结论
11
三、 Play Framework 框架 路由(Route)
11
三、Play Framework 框架的控制器(Controller)
Байду номын сангаас
14
四、 Play Framework 框架的模板
27
五、Play框架中的Ajax

怎么建立自己的博客

怎么建立自己的博客

怎么建立自己的博客

博客的建立是展示个人知识和经验的一个重要方式。通过建立自己的博客,可以与他人分享自己的观点,并从交流中获得更多的成长和学习机会。下面是一些关键步骤,帮助你建立自己的博客。

1. 选择合适的博客平台

选择一个合适的博客平台是创建博客的第一步。下面是一些热门的博客平台供你选择:

•WordPress:WordPress是一个强大且灵活的博客平台,具有丰富的主题和插件选择,适合有一定技术基础的用户。

•Blogger:Blogger是谷歌推出的免费博客平台,易于使用和管理,适合新手用户。

•Medium:Medium是一个社交化的博客平台,用户可以轻松分享和发现各种类型的文章,适合喜欢社区交流的用户。

•GitHub Pages:GitHub Pages 是一个由 GitHub 提供的免费静态网站托管服务,适合有一定技术基础的用户。

选择适合自己的平台时,可以考虑平台的易用性、功能性以及扩展性。你也可以根据个人喜好选择其他博客平台。

2. 注册和设置博客

选择了合适的博客平台后,就可以注册一个账号并设置自己的博客了。下面是一些常见的设置项:

•选择主题:根据个人喜好选择一个合适的主题,可以根据需要进行自定义修改。

•填写博客信息:填写博客的标题、描述和关键词等信息,有助于提高博客的可见性。

•配置域名:如果你有自己的域名,可以将其绑定到博客上,增加博客的专业性。

在完成这些设置后,你的博客就可以正式上线了。

3. 编写和发布文章

博客的主要内容是文章,在平台上编写并发布文章是建立博客的重要一环。下面是一些关键步骤:

COORD10程序制作

COORD10程序制作

COORD10程序制作

首先,用户可以创建个人账户,以便能够保存和同步他们的日程安排和任务列表。该账户将为用户提供一个安全的空间,使他们能够随时随地访问和管理他们的时间和任务。

程序的主界面分为两个主要部分:日历和任务列表。

日历部分允许用户快速查看他们的每天安排。用户可以单击特定日期查看详细信息,如已安排的活动和任务。通过简单的拖放操作,用户可以轻松调整和重排他们的活动和任务。用户还可以设置提醒,以确保他们不会错过任何重要的事情。

任务列表部分可让用户轻松创建和管理他们的任务。用户可以输入任务的名称、日期和优先级。用户还可以将任务分配给特定的项目或类别,以便更好地组织它们。任务还可以标记为完成或未完成,以便用户了解目前的进展情况。

COORD10还提供了一些附加功能,以帮助用户更好地管理他们的时间和任务。其中之一是时间跟踪功能。用户可以使用此功能记录他们在特定任务上花费的时间,以便更好地评估他们的工作效率和时间管理技巧。此外,用户还可以设置自定义目标,例如每天工作的小时数或每周完成的任务数,并使用跟踪功能来监控他们的进展。

另一个有用的功能是分享和协作。用户可以将他们的日程安排和任务列表与其他COORD10用户共享,以便可以更好地协调工作和计划会议。用户还可以将特定任务分配给其他用户,并设置提醒功能,以确保任务按时完成。

总之,COORD10是一个功能强大的应用程序,适用于各种情况下的时

间管理和任务安排。它的用户友好界面和实用功能使用户能够更轻松地管

理他们的时间和任务,提高生产力并实现更好的组织能力。无论是在工作、学习还是个人生活中,COORD10都将成为用户的重要助手。

python教程:用简单的Python编写Web应用程序

python教程:用简单的Python编写Web应用程序

python教程:⽤简单的Python编写Web应⽤程序

python现在已经成为很多程序员关注的编程语⾔之⼀,很多程序员也都开始弄python编程,并且很多时候都会⽤⾃⼰的操作来选择,⽽现在不管是程序员还是少⼉编程,都会有python这门课,今天就和⼤家分享⼀下。

安装

安装步骤跟运⾏指令⼀样简单:

pip install streamlit

查看是否安装成功时只需运⾏:

streamlit hello

屏幕上应该显⽰的是:

可以在浏览器中访问本地URL:localhost:8501,来查看执⾏中的Streamlit应⽤程序。开发⼈员那⾥也有许多很棒的样本可供尝试。

Streamlit“你好,世界”

Streamlit旨在通过简单的Python代码实现简单的程序开发。

那就设计⼀款简单的应⽤程序,看看它是否真的像它说的那样。

从Streamlit的名为“hello,world”的程序⼊⼿,这个程序并不复杂。只需要复制粘贴下⾯这个代码到“helloworld.py”的⽂件夹中即可。

import streamlit as st

x=st.slider('x')

st.write(x,'squared is',x*x)

然后到最后运⾏阶段时:

streamlit run helloworld.py

看吧,浏览器连接到localhost:8501,就可以看到执⾏中的程序,滑动⿏标就可以得到结果。

简单的滑块插件应⽤程序

操作⾮常简单。在构建上图应⽤程序时,⽤到了Streamlit的两个特性:

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

play手把手教你创建一个博客项目10完整的应用程

序测试

现在,我们差不多终止了博客引擎的编码工作,但对项目来讲还没有完成,为了让我们的代码能够完全正确的工作,我们还需要对项目进行测试。

因此,我们之前差不多为yabe的模型层功能书写的单元测试,同时确信博客引擎的核心功能差不多进行了完好的测试,然而关于一个web应用程序来讲模型层只是其中的一部分,我们还需要确定web接口能否按预期的目标一样正常工作。也确实是讲还需要测试yabe博客引擎的操纵器层,甚至需要对UI自身进行测试,比如我们的JavaScript代码。

测试操纵器部分

Play提供了一种功能,确实是使用JUnit来直截了当测试应用程序的操纵器。我们把这些测试叫做‘功能性测试’,这是因为我们打算测试web应用程序的完整功能。

差不多上,一个功能性测试将直截了当调用Play的ActionInvoker,和一个HTTP 要求相似。因此我们需要给出一个HTTP方法、一个URI和多个HTTP参数。 Play 之后会路由这些要求,调用相应的action,同时回发到填写的响应(filled response)。之后,你就能够对之进行分析,以检查响应内容是否你所预期的。

import org.junit.*;

import play.test.*;

import play.mvc.*;

import play.mvc.Http.*;

import models.*;

public class ApplicationTest extends FunctionalTest {

@Test

public void testThatIndexPageWorks() {

Response response = GET("/");

assertIsOk(response);

assertContentType("text/html", response);

assertCharset("utf-8", response);

}

}

现在看,它依旧一个标准的JUnit测试。请注意,在那个地点我们使用Play的FunctionalTest超类,要紧是为了得到所有可用的工具。那个测试只对应用程序的主页进行了测试(/ URL渲染一个HTML响应,以‘200 OK’作为状态代码)。

接下来,我们将检查治理区域(administration area)的安全工作能否正常工作。在ApplicationTest.java里添加下面那个新测试:

@Test

public void testAdminSecurity() {

Response response = GET("/admin");

assertStatus(302, response);

assertHeaderEquals("Location", "/login", response);

}

现在,用play test命令把yabe应用程序运行于测试模式,打开, 选择ApplicationTest.java测试并运行。

是绿色的吗?

因此!通过这种方式,我们能够对所有的应用程序功能性进行测试,但把这用于测试一个基于html的web应用程序时,这并不是最好的方式。关于我们的博客引擎项目来讲,直截了当在真实的扫瞄器进行测试可能会更好。这确实是play 的‘Selenium tests’测试要干的事。

这种基于“功能性测试”的JUnit仍旧专门有用,专门是用于测试一个返回非html响应(比如JSON或XML)的Web services时。

书写Selenium测试代码

Selenium是一个专用于测试web应用程序的测试工具。那个工具最酷的确实是Selenium承诺我们在一个扫瞄器里直截了当运行测试套件,由于它使用的是真实的扫瞄器,因此,我们能够确定测试通过后,项目就能够在生产环境下完美的运行。

一个Selenium测试套件确实是一个专门的html文件。HTML syntax required by Selenium必须使用的HTML语句比较单调(使用HTML表格元素进行数据格式化显示),好消息是play将使用play模板引擎和一系列支持简单Selenium表示语法的标签来关心你生成这些元素)。使用模板最有味的特点是你全然不需要

‘static scenarios’,同时能够使用play模板强大的功能(如循环、条件块)来书写更复杂的测试。

然而,你仍旧能够连续在模板里使用原始的HTML Selenium语法,假如需要的话,还能够不记得特定的Selenium标签。假如你使用多个用于生成test

scenarios(比如Selenium IDE)的Selenium工具中的一个,这将变得专门有味。

新创建的play应用程序的默认测试套件差不多包含了一个Selenium测试,打开yabe/test/Application.test.html文件:

*{ You can use plain Selenium commands using the selenium tag }*

#{selenium}

// Open the home page, and check that no error occurred

open('/')

waitForPageToLoad(1000)

assertNotTitle('Application error')

#{/selenium}

运行那个测试应该可不能有任何咨询题。它只打开了主页,并检测页面内容是否包含了‘Application error’文本。

然而,和任何复杂的测试一样,在导航到应用程序并进行测试之前,你需要设置一系列众所周知的数据,我们因此需要重用fixture概念,同时在开始测试之前使用yabe/test/data.yml文件,#{fixture /}标签导入这些测试数据:

#{fixture delete:'all', load:'data.yml' /}

#{selenium}

// Open the home page, and check that no error occurred

open('/')

waitForPageToLoad(1000)

assertNotTitle('Application error')

#{/selenium}

相关文档
最新文档