Revel 测试


本文整理自网络,侵删。

Revel提供了一个测试框架,可以很容易地编写和运行针对您的应用程序的功能测试。

应用程序带有一个简单的测试骨架以便快速上手测试。

Revel 测试框架概要

测试代码保存在测试目录中:

corp/myapp
    app/
    conf/
    public/
    tests/    <----

一个简单的测试如下所示:

type AppTest struct {
  revel.TestSuite
}

func (t *AppTest) Before() {
    println("Set up")
}

func (t *AppTest) TestThatIndexPageWorks() {
    t.Get("/")
    t.AssertOk()
    t.AssertContentType("text/html")
}

func (t *AppTest) After() {
    println("Tear down")
}

上面的例子中展示了:

  • 测试套件是嵌入revel.TestSuite的一个struct
  • Before() 、 After() 在每个测试方法之前和之后被调用,如果有的话。
  • revel.TestSuite 帮助发出请求到你的应用程序,和对响应的断言。
  • 如果一个断言失败,产生了恐慌,将被测试工具捕获。

你可以用两种方式运行这个测试:

  • 交互方式,Web浏览器,开发过程中非常有用。
  • 非交互方式,命令行,对于持续构建整合有用。

开发一个测试套件

要创建自己的测试套件,需要定义一个嵌入了revel.TestSuite类型的struct, 它提供了一个HTTP客户端和一些辅助方法发出请求到应用程序。

type TestSuite struct {
    Client       *http.Client
    Response     *http.Response
    ResponseBody []byte
}

// 一些请求方法
func (t *TestSuite) Get(path string)
func (t *TestSuite) Post(path string, contentType string, reader io.Reader)
func (t *TestSuite) PostForm(path string, data url.Values)
func (t *TestSuite) MakeRequest(req *http.Request)

// 一些断言方法
func (t *TestSuite) AssertOk()
func (t *TestSuite) AssertContentType(contentType string)
func (t *TestSuite) Assert(exp bool)
func (t *TestSuite) Assertf(exp bool, formatStr string, args ...interface{})

参考godoc

所有的请求方法类似:

  1. 接受一个路径 (比如 /users/)
  2. 向应用程序服务器发出一个请求
  3. 存储 Response 中的成员
  4. 读取完整的响应到ResponseBody 成员中

如果开发人员希望使用一个定制的HTTP客户端,而不是默认的http.DefaultClient,应当在Before() 方法之前替换它。

断言失败后,会抛出恐慌并被测试工具捕获,并将错误列出。

运行测试套件

为了运行测试,testrunner 模块必须被激活。需要在 app.conf文件中配置:

module.testrunner = github.com/revel/revel/modules/testrunner

您还必须导入测试模块的路由,在你的 routes 文件中加入下面的内容:

module:testrunner

配置完后,测试就可以交互或非交互方式运行。

运行交互式测试

要利用 Revel 的热编译功能,交互式测试运行提供了快速编辑刷新周期。

阅读剩余部分

相关阅读 >>

Revel 配置文件app.conf

Revel session flash

Revel 日志类型

Revel results

Revel 参数绑定

Revel 参数验证

Revel 计划任务

Revel 路由routes

Revel 过滤器

Revel 项目结构

更多相关阅读请进入《Revel》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...

    正在狠努力加载,请稍候...