标签: functional-testing

Ruby on Rails使用RESTful Authentication插件进行功能测试

我今天开始为我的rails应用程序编写功能测试.我使用RESTful身份验证插件.我遇到了一些令人困惑的事情,我希望有人可以为我澄清.

1)我写了一个快速登录功能,因为我的rails应用程序中的大多数功能都需要身份验证.

def login_as(user)
   @request.session[:user_id] = user ? user.id : nil
end
Run Code Online (Sandbox Code Playgroud)

我看到这个函数的问题,它基本上是伪造的身份验证.我应该担心吗?也许只要我在某处测试真正的身份验证方法就可以走这条路.或者这可能是一种糟糕的做法.

2)第二个令人困惑的事情是,在我的功能测试的某些地方,我需要完整的身份验证过程.当用户被激活时,我有do_activate方法为用户创建一些初始对象.它类似于为学生应用程序创建空白笔记本对象和笔对象,如果这是有意义的.

因此,为了正确测试我的应用程序,我需要用户点击该激活状态,以便创建这些对象.我目前正在使用Factory Girl创建用户,然后调用上面的login_as函数来伪造身份验证.

我想另一个选择是跳过完整的身份验证序列,然后用Factory Girl创建空白对象.我可以在其他地方测试正确的身份验证.

你怎么看?如果我应该通过正确的序列,为什么下面的代码不是调用do_activate函数?

user = Factory.create(:user)
user.active = 1
user.save
Run Code Online (Sandbox Code Playgroud)

谢谢!

testing ruby-on-rails restful-authentication functional-testing

8
推荐指数
1
解决办法
4462
查看次数

有没有人使用Minitest :: Spec进行Rails功能测试?

Minitest的规范库很棒.我已经能够在Rails单元测试中使用它没问题.但是,Rails功能测试继承自ActionController :: TestCase,它在其设置中提供了像@controller这样的实例变量.

有没有人使用Minitest :: Spec lib进行Rails功能测试?

如果没有,我正在考虑创建一个小型库来做到这一点.我对rspec并不太热衷,并且应该开始将它的重点转移到rspec上.拥有一些轻量级的东西并且基于已经提供的工具构建它会很不错.

functional-testing minitest ruby-on-rails-3

8
推荐指数
1
解决办法
2241
查看次数

适用于iPad/iPhone的功能测试自动化工具?

在iPad/iPhone上运行功能测试似乎没有太多选择.快速搜索带来了一些选择:FoneMonkey,Frank,UI Automation.

有没有人有这方面的经验或有更好的解决方案的建议?

iphone testing automated-tests functional-testing ipad

8
推荐指数
1
解决办法
7688
查看次数

如何使用量角器检查元素是否无法点击?

测试一个元素是否可以使用量角器进行测试是微不足道的,但是我一直在试图弄清楚如何检查一个元素是否无法点击.

我试图将click函数包装在try/catch中,以便在尝试单击它时抛出错误时应该捕获它并让测试通过; 但是,这不起作用.

这是我执行检查的方法的代码:

return this.shouldSeeDisabledFunds()
    .then(function() {
        var clickable = true;

        try {
            fundsElem.first().click();
        } catch (e) {
            clickable = false;
            console.log(clickable);
        } finally {
            console.log(clickable);
        }

        console.log(clickable);

        // All the way through, clickable is still true, and the console log in the
        // catch is not called. I believe this is because click is asynchronous.
    })
;
Run Code Online (Sandbox Code Playgroud)

javascript functional-testing node.js protractor

8
推荐指数
1
解决办法
2万
查看次数

如何自动化功能/集成测试和数据库回滚

与我之前的问题相反,我会尝试提出我的要求.

我试图找到一些符合以下条件的框架/方法/"东西":

  • 能够使用C#编写自动化测试,最好用Visual Studio编写.
  • 测试应该驱动Web浏览器并像用户那样与SUT交互.
  • 测试应该能够在DB中设置测试场景.
  • 测试应该能够断言用户交互在DB中具有预期的效果.
  • 测试完成后,它应该能够回滚它在DB中所做的所有更改.

我的第一次尝试是使用NUnit测试来驱动Selenium(以及之前的Watin),但我在使用TransactionScope回滚Selenium驱动的浏览器在数据库中所做的更改时遇到了一些问题(请查看上面的链接).

有没有人在"现实世界"中做过这样的事情?我通过谷歌找到了一些参考文献,但未能找到有关如何实现这一点的具体例子.如果我正在进行单元测试,那就不会有任何问题.在那种情况下,TransactionScope就足够了.

编辑: R.Harvey向我指出了这个问题,这几乎与我的情况相同.

不过这个问题仅仅是几乎相同的.我的应用程序是一系列服务的一部分,所有这些服务都访问同一组数据库表.所需的测试数据量不允许有效使用drop/create-scripts,因此是否有其他替代解决方案?

我们正在使用SQL Server 2005,而且我对数据库魔术并不十分精通,所以如果有一些方法可以使用除drop/create之外的sql脚本,那么这可能是一个选项.

编辑2:

基于答案和一些额外的头脑,我们将为开发人员提供更轻量级的数据库,以执行单元,集成和功能测试.这使我们能够使用sql脚本来设置和拆除测试.

database asp.net integration-testing automated-tests functional-testing

7
推荐指数
2
解决办法
4428
查看次数

如何在rails中测试嵌套属性?

我有一个rails控制器,在这里定义:

https://github.com/abonec/Simple-Store/blob/master/app/controllers/carts_controller.rb

购物车页面上,用户可以通过发布嵌套属性来指定line_items的数量.参数如下所示:

{ "cart" => {
  "line_items_attributes" => {
    "0" => {
      "quantity" => "2",
      "id" => "36" } } },
  "commit" => "Update Cart",
  "authenticity_token" => "UdtQ+lchSKaHHkN2E1bEX00KcdGIekGjzGKgKfH05So=",
  "utf8"=>"\342\234\223" }
Run Code Online (Sandbox Code Playgroud)

在我的控制器动作中,这些参数保存如下:

@cart.update_attributes(params[:cart])
Run Code Online (Sandbox Code Playgroud)

但我不知道如何在测试中测试这种行为.@cart.attributes仅生成模型属性而不是嵌套属性.

我该如何测试这种行为?如何在我的功能测试中使用嵌套属性模拟post请求?

testing ruby-on-rails functional-testing

7
推荐指数
2
解决办法
4716
查看次数

即使在应用程序退出后,如何使用UIAutomation仪器继续测试iOS应用程序?

我有一个应用程序.应用程序中有一个按钮,如果单击该按钮,将退出应用程序.我正在使用UIAutomation仪器测试应用程序.我想测试这个按钮.但是在应用程序退出后,仪器会停止发出异常.我想要做的是,在应用程序存在之后,我想重新打开应用程序并继续进行剩下的测试.有没有其他人在同一场景?如果是这样,如果您找到了解决方案,请与他人分享解决方案吗?

automated-tests functional-testing ios ios-ui-automation

7
推荐指数
1
解决办法
2072
查看次数

Django Test框架,带有基于文件的电子邮件后端服务器

我在Django框架中制定了测试用例.

使用案例:我使用的API通过向用户发送电子邮件来注册用户,当他们点击电子邮件中提供的链接时,他们的帐户就会被激活.

在我的settings.py我正在使用

EMAIL_FILE_PATH  ='django.core.mail.backends.filebased.EmailBackend'
Run Code Online (Sandbox Code Playgroud)

它指向本地目录.

从eclipse运行PyUnit测试用例时,所有工作文件.为每个发送的电子邮件生成文本文件

但是,当我使用时

python ./manage.py test <component_name>
Run Code Online (Sandbox Code Playgroud)

文件不会生成.

任何见解当我执行测试用例./manage.py和使用时有什么区别pyUnit

python django automated-tests unit-testing functional-testing

7
推荐指数
2
解决办法
3262
查看次数

重定向后对Flash消息的功能测试

我不确定如何通过功能测试检查flash消息.我的问题与redirect_to我的flash[:error]DOES 测试通过有关.这是我的create行为:

def create
  @user = User.new(params[:user])
  if @user.save
    redirect_to @user, flash: { success: "Welcome!" }
  else
    flash.now[:error] = "Signup failed:"
    render 'new'
  end
end
Run Code Online (Sandbox Code Playgroud)

我有一个通过测试flash[:error]1)检查flash[:error]是正确的值,2)检查页面的flash div,3)获取一个新页面并检查闪存消息是否已被清除.我尝试进行类似的测试,flash[:success]但是当它试图在页面上找到div时失败了.这是失败的测试:

  should "show flash[:success] message" do
    post :create, user: { name: "valid user",
                          password: "userpw",
                          password_confirmation: "userpw",
                          email: "a@b.com" }        
    assert_redirected_to user_path(assigns(:user)), "user isn't being redirected to their page after registration"
    assert_equal flash[:success], "Welcome!", "flash[:success] isn't being set properly"
    assert_select "div.alert-success", flash[:success] …
Run Code Online (Sandbox Code Playgroud)

testing redirect ruby-on-rails functional-testing

7
推荐指数
1
解决办法
6411
查看次数

Android Espresso:如何检查Toast消息是否未显示?

我现在正在进行功能测试,其中一个我必须测试没有显示吐司信息.考虑到这是我用来检查是否显示toast消息的代码(此代码有效):

onView(withText(R.string.my_toast_message))
        .inRoot(withDecorView(not(getActivity().getWindow().getDecorView())))
        .check(matches(isDisplayed()));
Run Code Online (Sandbox Code Playgroud)

下面你可以找到我用来检查没有显示吐司信息的代码(它们都不起作用):

方法一:

onView(withText(R.string.error_invalid_login))
        .inRoot(withDecorView(not(getActivity().getWindow().getDecorView())))
        .check(matches(not(isDisplayed())));
Run Code Online (Sandbox Code Playgroud)

方法二:

onView(withText(R.string.error_invalid_login))
        .inRoot(withDecorView(not(getActivity().getWindow().getDecorView())))
        .check(doesNotExist());
Run Code Online (Sandbox Code Playgroud)

任何关于如何检查未显示吐司信息的想法都会非常感激:)

testing android functional-testing android-espresso

7
推荐指数
3
解决办法
6301
查看次数