python'daki assertEquals ve assertEqual


184

Python arasında assertEqualsve assertEqualiçinde bir fark var mı unittest.TestCase?

Ve yoksa, neden iki fonksiyon var? Sadece kolaylık sağlamak için mi?

Yanıtlar:


210

İyi soru!

Aslında, Python 2.6, hem assertEqualve assertEqualskolaylık takma adları vardır failUnlessEqual. Kaynak onları şöyle beyan eder:

 # Synonyms for assertion methods
 assertEqual = assertEquals = failUnlessEqual

In Python 3 , sizin noktaya, failUnlessEqualaçıkça itiraz edildi. assertEqualsBu yorumu taşır :-)

# Assertion method için benzer kelimeler

# Çoğullar belgelenmemiştir. Kullanımı caydırmak için bu şekilde tutun.

# Daha fazla ekleme. Kaldırma.

# Bunlar üzerinde bir amortisman döngüsünden geçmek birçok insanı rahatsız edecektir.

Yani, sonuç Python 2.x için ne istersen kullanmalısın, ama assertEqualPython 3 için eğilimlisin .


34
Aslında çoğullarla ilgili yorum belirsizdir. "Çoğullar" belgesiz olduğunu söylüyor. Son cümleniz, bunu 's' ile biten yöntem adları anlamına geldiğini anladığınızı gösterir assertEquals. Yine de dilbilgisel olarak eşittir , çoğul değil, fiilin tekil (3. kişi) bir şeklidir. Bence yorum yazarının ne anlama geldiğini doğru anladınız, ancak 'çoğul' kelimesi yanlış.
LarsH

45

3.3 güncellemesi: 26.3.7.1.1'den itibaren . Kullanımdan kaldırılmış takma adlar :

Tarihsel nedenlerden dolayı, bazı TestCase yöntemlerinin artık kullanımdan kaldırılmış olan bir veya daha fazla diğer adı vardı. Aşağıdaki tabloda, kullanım dışı takma adlarıyla birlikte doğru adlar listelenmektedir:

Method Name   | Deprecated alias | Deprecated alias
--------------+------------------+-----------------
assertEqual() | failUnlessEqual  | assertEquals
...


5

Bence bu "bunu yapmak için tek bariz yol" ve "genel kod akışını anlamsal olarak yapmak için takma ad" arasındaki gerginlikti. Şahsen okumayı sevdiğimi buldum

failIf(some_condition)

bitmiş

assertFalse(some_condition)

ama beğendi

assertEqual(a, b)

diğer ikisine göre ( assertEquals(a, b)dilbilgisi duygusumu bozuyor).

“Bunu yapmanın tek bariz yolu” ileride önceliğe sahip.



0

Belirli soruya cevap vermediğini biliyorum, ancak arama yaparken buraya geldiyseniz:

using deprecated method assertEquals()

Sadece .assertEqual () çağrısını değiştirmeniz yeterlidir ('s' i eşit olarak kaldırın)


-1

AssertEquals'ın yeniden yazılması dışında neredeyse aynı. Burada olduğu gibi assertEqual kullanmanız önerilir:

# Synonyms for assertion methods
# The plurals are undocumented.  Keep them that way to discourage use.
# Do not add more.  Do not remove.
# Going through a deprecation cycle on these would annoy many people.


      assertEquals = assertEqual

Çevrimiçi kaynak: https://github.com/python/cpython/blob/e42b705188271da108de42b55d9344642170aa2b/Lib/lib2to3/fixes/fix_asserts.py


1
Teknik olarak haklısın, ama isimlerden biri reddedildi, diğeri reddedildi. Bağladığınız kod, kullanımdan kaldırılmış adları kullanımdan kaldırılmış olanlara yeniden yazmak içindir.
Marius Gedminas
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.