我目前正在為這個名為twoNumberSum的問題撰寫測驗,該問題只是要求回傳給定陣列上的 2 個數字,這些數字相加為target_number. 在我的測驗中,我目前檢查這 2 個數字是否存在,但是如何檢查它們是否在陣列中,以及如何宣告順序無關緊要?我有這個
import unittest
from problems import two_number_sum
class TestTwoNumberSum(unittest.TestCase):
def test_two_number_sum(self):
result = two_number_sum.twoNumberSum([4, 6, 1, -3], 3)
self.assertTrue(len(result))
self.assertTrue(6 in result)
self.assertTrue(-3 in result)
# self.assertEqual(result, [6, -3])
這行就在這里,檢查值是否在陣列中,# self.assertEqual(result, [6, -3])(或者至少這是我認為它所做的,因為我是新手)。這是有效的代碼,
def twoNumberSum(array, targetSum):
array.sort()
left = 0
right = len(array) - 1
while left < right:
currentSum = array[left] array[right]
if currentSum == targetSum:
return [array[left], array[right]]
# return array[left], array[right]
elif currentSum < targetSum:
left = 1
elif currentSum > targetSum:
right -= 1
return []
但請注意我在終端上得到的資訊,
Traceback (most recent call last):
File "/Users/jeffersonlopezgarcia/Desktop/App Academy/Diagnostic/tests/two_number_sum_test.py", line 10, in test_two_number_sum
self.assertEqual(result, [6, -3])
AssertionError: Lists differ: [-3, 6] != [6, -3]
First differing element 0:
-3
6
- [-3, 6]
[6, -3]
因此,為什么我想學習怎么說,這可能是OR另一個。意思是,順序確實很NOT重要。另外,問題說順序無關緊要。
self.assertTrue(len(result))
self.assertTrue(6 in result)
self.assertTrue(-3 in result)
這僅檢查是否:There are 2 numbers,以及是否the 2 numbers are there與target_number.
另外,我如何在這里提出錯誤?提前致謝!
uj5u.com熱心網友回復:
一個簡單的解決方案是將您的串列轉換為測驗集。集合是“無序”資料結構,本質上不關心其元素的順序。
self.assertEqual(set(result), set([6, -3]))
# you can also just create a set directly like this
self.assertEqual(result, {6, -3})
單元測驗庫還允許您斷言任何任意布爾運算式為真。像這樣的東西也可以作業。對于長度超過兩個的串列,集合會更有效,因為使用這種方法,您必須在 OR 運算式中列出串列的所有可能排列。
self.assertTrue(result == [6, -3] or result == [-3, 6])
https://docs.python.org/3.9/library/stdtypes.html#set-types-set-frozenset
uj5u.com熱心網友回復:
如果對結果進行排序,則會簡化檢查,因為只有一個結果。
self.assertEqual(sorted(result), [-3, 6])
或者,您可以or在assertTrue().
self.assertTrue(result == [6, -3] or result == [-3, 6])
另一種解決方案是比較兩組。
self.assertEqual(set(result), set([6, -3]))
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/318181.html
標籤:Python 蟒蛇-3.x 单元测试 python-unittest
