返回正数计数列表和负数总和的函数

时间:2016-09-15 18:32:41

标签: python

当我针对单元测试运行代码时遇到问题。任何意见,将不胜感激。请找到以下代码:

def manipulate_data(data):
    count = 0
    sum1 = 0
    new_list = []
    for x in data:
        if x > 0:
            count += 1

        if x < 0:
            sum1 += x

    new_list.append(count)
    new_list.append(sum1)

    return new_list

单元测试如下:

import unittest

class ManipulateDataTestCases(unittest.TestCase):
  def test_only_lists_allowed(self):
    result = manipulate_data({})
    self.assertEqual(result, 'Only lists allowed', msg='Invalid argument')

  def test_it_returns_correct_output_with_positives(self):
    result = manipulate_data([1, 2, 3, 4])
    self.assertEqual(result, [4, 0], msg='Invalid output')

  def test_returns_correct_ouptut_with_negatives(self):
    result = manipulate_data([1, -9, 2, 3, 4, -5]);
    self.assertEqual(result, [4, -14], msg='Invalid output')

我得到的错误是:

`Total Specs: 3 Total Failures: 1
  1 .  test_only_lists_allowed
  Failure in line 11, in test_only_lists_allowed
      self.assertEqual(result, 'Only lists allowed', msg='Invalid argument')
    AssertionError: Invalid argument`

4 个答案:

答案 0 :(得分:1)

def manipulate_data(data):     如果不是isinstance(数据,列表):         返回&#39;仅允许列表&#39;

count = 0
sum1 = 0
new_list = []
for x in data:
    if x > 0:
        count += 1

    if x < 0:
        sum1 += x

new_list.append(count)
new_list.append(sum1)
return new_list

答案 1 :(得分:0)

结果是正确的。在test_only_lists_allowed()中,您将函数返回的列表与字符串'Only lists allowed'进行比较。

该测试将失败。

答案 2 :(得分:0)

对于{}的情况,manipulate_data的结果是[0,0] 试试这个:

Route::group(['domain' => '{account}.myapp.com'], function () {
    Route::get('user/{id}', function ($account, $id) {
        //
    });
});

答案 3 :(得分:0)

您是否编写了单元测试?那个人认为你应该只检查清单。在python中执行此操作的方法是:

devenv /resetuserdata

编写方式时,程序将尝试迭代所有迭代,包括>>>l = [] >>>isinstance(l, list) True >>>d = {} >>>isinstance(d, dict) True >>>isinstance(d, list) False 。如果您想保留此行为,请记住它会迭代dict的键而不是值。