当我针对单元测试运行代码时遇到问题。任何意见,将不胜感激。请找到以下代码:
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`
答案 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
的键而不是值。