标签: functional-testing

如何在rails 3功能测试中发布JSON数据

我打算在我的项目中的请求和响应中使用JSON数据,并在测试中遇到一些问题.

搜索一段时间后,我找到以下curl用于发布JSON数据的代码:

curl -H "Content-Type:application/json" -H "Accept:application/json" \
    -d '{ "foo" : "bar" }' localhost:3000/api/new
Run Code Online (Sandbox Code Playgroud)

在控制器中,我可以使用简单的方法访问JSON数据params[:foo].但对于功能测试,我只找到postxhr(别名xml_http_request).

如何在rails中编写功能测试以达到与使用相同的效果curl?或者我应该以其他方式进行测试?

这是我尝试过的.我找到了xhrin 的实现action_controller/test_case.rb,并尝试添加jhr方法只需更改'Conetent-Type'和'HTTP_ACCEPT'.(已添加test/test_helpers.rb)

def json_http_request(request_method, action, parameters = nil, session = nil, flash = nil)
  @request.env['Content-Type'] = 'Application/json'
  @request.env['HTTP_ACCEPT'] ||= [Mime::JSON, Mime::JS, Mime::HTML, Mime::XML, 'text/xml', Mime::ALL].join(', ')
  __send__(request_method, action, parameters, session, flash).tap do
    @request.env.delete 'Content-Type'
    @request.env.delete 'HTTP_ACCEPT'
  end
end
alias jhr :json_http_request
Run Code Online (Sandbox Code Playgroud)

我以同样的方式使用xhr …

json ruby-on-rails functional-testing

15
推荐指数
3
解决办法
1万
查看次数

在Symfony2中测试文件上载

在Symfony2文档中,它提供了一个简单的示例:

$client->request('POST', '/submit', array('name' => 'Fabien'), array('photo' => '/path/to/photo'));
Run Code Online (Sandbox Code Playgroud)

模拟文件上传.

但是在我的所有测试中,我在应用程序中的$ request对象中没有得到任何内容,并且$_FILES数组中没有任何内容.

这是一个简单WebTestCase的失败.它是自包含的,并$client根据您传入的参数测试构造的请求.它不测试应用程序.

class UploadTest extends WebTestCase {

    public function testNewPhotos() {
        $client = $this->createClient();
        $client->request(
            'POST', 
            '/submit', 
            array('name' => 'Fabien'), 
            array('photo' => __FILE__)
        );

        $this->assertEquals(1, count($client->getRequest()->files->all()));
    }
}
Run Code Online (Sandbox Code Playgroud)

只是为了清楚.这不是关于如何进行文件上传的问题,我可以做.它是关于如何在Symfony2中测试它们.

编辑

我确信我做得对.所以我已经为Framework创建了一个测试并发出了拉取请求. https://github.com/symfony/symfony/pull/1891

phpunit integration-testing file-upload functional-testing symfony

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

用shoulda测试设计

我在使用shoulda测试设计时遇到了一些困难:

2) Error:
test: handle :index logged as admin should redirect to Daily page.
(Admin::DailyClosesControllerTest):
NoMethodError: undefined method `env' for nil:NilClass
devise (1.0.6) [v] lib/devise/test_helpers.rb:52:in
`setup_controller_for_warden'
Run Code Online (Sandbox Code Playgroud)

我在test_helper中有这个:

include Devise::TestHelpers
Run Code Online (Sandbox Code Playgroud)

想法?提前致谢,

克里斯提

ruby-on-rails shoulda functional-testing devise

14
推荐指数
2
解决办法
3581
查看次数

在运行时跳过RSpec测试用例

我正在针对存在于几个不同市场的网站产品运行RSpec测试.每个市场都有微妙的不同功能组合等.我希望能够编写测试,以便他们在运行时跳过自己,具体取决于他们所针对的市场/环境.在不同的市场上运行时,测试不应该失败,也不应该通过 - 它们根本不适用.

不幸的是,似乎没有一种简单的方法可以将测试标记为跳过.如果不尝试注入"待定"块(不管怎样都不准确?),我该如何做到这一点?

testing rspec functional-testing rspec2

14
推荐指数
2
解决办法
6768
查看次数

调试Python解释器中的代码

我喜欢在Python解释器中测试函数.当我想看到的不仅仅是返回值和副作用时,是否可以在Python解释器中调试函数?

如果是这样,你能展示基本的调试器操作(启动带参数的函数,设置断点,下一步,步入,观察变量)?如果没有,你会如何以另一种方式调试函数?

关键是,我想只调试一个将提供参数的特定函数.我不想调试整个模块代码.

谢谢你的建议

python debugging interpreter function functional-testing

14
推荐指数
3
解决办法
6390
查看次数

Symfony web测试用例JSON

如何在API中再次运行webtestcase?有关功能测试的默认指南仅提供以下命令:

$client = static::createClient();
$crawler = $client->request('GET', '/some-url');
Run Code Online (Sandbox Code Playgroud)

Crawler类是一个DOM爬虫.我检查了FrameworkBundle\Client类的引用,但是找不到允许我发出返回原始Response的请求的方法.至少这样,我将能够json_decode输出并进行我的测试.

我可以用什么来实现这个目标?

json functional-testing symfony

14
推荐指数
2
解决办法
5746
查看次数

Pytest:了解测试会话结果

我是使用Pytest测试Python的新手,我遇到了一个小而烦人的挂机.在命令行测试会话结果中,我看到我的测试通过,但显示的百分比不是100%.通过一些激进的日志记录,我能够确认我的测试正在按预期传递 - 那么显示的百分比是什么信息?

示例测试会话输出:

platform win32 -- Python 3.7.0a4, pytest-3.5.0, py-1.5.3, pluggy-0.6.0
rootdir: C:\api-check, inifile:
collected 5 items

test_Me.py ...                                                           [ 60%]
test_env.py ..                                                           [100%]

========================== 5 passed in 6.04 seconds ===========================
Run Code Online (Sandbox Code Playgroud)

python testing functional-testing pytest

14
推荐指数
2
解决办法
2189
查看次数

如何自动测试中等信任代码

我想编写以中等信任方式运行的自动化测试,如果需要完全信任,则会失败.

我正在编写一个库,其中某些功能仅在完全信任的情况下可用,并且我想验证我希望以中等信任运行的代码将正常工作.如果还想知道如果我改变一个需要完全信任的类,我的测试将失败.

我已经尝试创建另一个AppDomain并加载中等信任PolicyLevel,但我总是得到程序集错误或在尝试运行交叉AppDomain回调时无法加载其依赖项.

有没有办法解决这个问题?

更新:基于回复,这是我的.请注意,正在测试的类必须扩展MarshalByRefObject.这是非常有限的,但我没有看到解决方法.

using System;
using System.Reflection;
using System.Security;
using System.Security.Permissions;
using Xunit;

namespace PartialTrustTest
{
    [Serializable]
    public class ClassUnderTest : MarshalByRefObject
    {
        public void PartialTrustSuccess()
        {
            Console.WriteLine( "partial trust success #1" );
        }

        public void PartialTrustFailure()
        {
            FieldInfo fi = typeof (Int32).GetField( "m_value", BindingFlags.Instance | BindingFlags.NonPublic );
            object value = fi.GetValue( 1 );
            Console.WriteLine( "value: {0}", value );
        }
    }

    public class Test
    {
        [Fact]
        public void MediumTrustWithExternalClass()
        {
            // ClassUnderTest must extend MarshalByRefObject
            var classUnderTest …
Run Code Online (Sandbox Code Playgroud)

c# automated-tests medium-trust full-trust functional-testing

13
推荐指数
2
解决办法
1711
查看次数

新grails应用程序的功能测试框架的优缺点是什么?

我有分析瘫痪,查看新grails(v1.3.4)应用程序的所有不同功能测试选项.我看了看

而且必须有其他人.我认为我将用于做出决定的一些标准包括(没有特别的顺序):

  • 可能长寿,积极发展
  • 可以做ajax/javascript
  • 支持PageObject或类似模式
  • 到期
  • 无头(例如htmlunit)是可以的,特别是如果它让事情变得更快
  • 报告很好
  • 支持NTLM凭证提供程序或类似
  • 紧凑,强大的测试脚本
  • 利用时髦的语言

我会特别感兴趣的是那些试过多个框架的人.谢谢!

testing grails groovy automated-tests functional-testing

13
推荐指数
1
解决办法
1740
查看次数

如何构建我的RSpec测试文件夹,文件和数据库?

我已经在RoR开发了一年多了,但我刚刚开始使用RSpec进行测试.

对于标准模型/控制器测试,我通常没有任何问题,但问题是我想测试一些复杂的功能过程,并且不知道如何构建我的测试文件夹/文件/数据库.

这是我的应用程序的基本结构:

class Customer
  has_one    :wallet
  has_many :orders    
  has_many :invoices, through: :orders
  has_many :invoice_summaries
end

class Wallet
  belongs_to :customer
end

class Order
  has_one    :invoice
  belongs_to :customer
end

class Invoice
  belongs_to :order
  belongs_to :invoice_summary
end

class InvoiceSummary
  belongs_to :customer
  has_many  :invoices
end
Run Code Online (Sandbox Code Playgroud)

主要问题是我想模拟我的对象的生命周期,这意味着:

  • 实例化将用于所有测试的客户和钱包(无需重新初始化)

  • 模拟时间流,创建和更新多个订单/发票对象和一些invoice_summaries.

对于订单/发票/ invoice_summaries的创建和更新,我想有类似的方法

def create_order_1
  # code specific to create my first order, return the created order
end

def create_order_2
  # code specific to create my second order, return the created order
end
.
.
. …
Run Code Online (Sandbox Code Playgroud)

ruby rspec ruby-on-rails functional-testing rspec-rails

13
推荐指数
1
解决办法
1616
查看次数