testing - 使用函数语言测试UI自动化

  显示原文与译文双语对照的内容

有人有在函数式语言中编写UI自动化的例子或者经验? 我目前正在学习 F#,我难以理解自动化的UI测试如何在Java或者 C# 中使用相同的页面。

时间: 原作者:

使用功能语言的最大赢法是根本不需要使用类,但是可以当它们是正确的答案。 另外,F# 允许一个良好的清洁'dsl'查看测试套件,因为类型推理和语法。 常用操作( 示例:登录) 很容易抽象成函数并在测试中调用。 任何特定于页面的函数都可以添加到该页的模块中,以及它的定义特性( css选择器等) 。

这里是一个测试书写的例子,用 canopy 。






test(fun _ ->


//description of the test


 describe"registering a user"



//go to root


 url"/" 



//ensure that you are on the login page


 on"/Account/LogOn" 



//click the registration link


 click"form a[href='/Account/Register']" 



//verify that you were redirected


 on"/Account/Register" 



//set the value of the input to email address specified


"#Email" <<"username@example.com"



//set the value of the input to"Password"


"#Password" <<"Password" 



//set the value of the input to"PasswordConfirmation" 


"#PasswordConfirmation" <<"Password" 



//click the register button


 click"input[value='register']" 



//verify that you were redirected


 on"/" 



//log off after test


 url"/account/logoff" 


)




关于树冠的更多信息

我已经在 F# ( 在 ruby 中也有一个) 中编写了一个Web自动化框架/库,而目前我不认为它的样式是功能的。 几乎一切都是一个函数。 你的测试套件是运行的函数列表。

github页面
示例:

使用 <500 LoC只有 3模块,与页面交互的主要功能集。简单的测试 runner 和一些配置变量。 在这一点上,这个范例对我非常有效。 我没有使用类定义的类,因为对于我来说,页定义就像使用的css选择器一样。 具有一系列值的模块很好地满足了这个需求。

给它一个镜头,我想你会发现这是完成目标的一种好方法。

抱歉首次发帖,所以它不会让我显示更多的链接。 查看 github,你可以在/canopy/canopy/canopy. fs看到源代码

原作者:
...