2016-11-22 49 views
1

我一直試圖斷言兩個文本框元素包含兩個成功測試的特定值。在Selenium Unittest中聲明兩個語句同時成立

文本框1:100 文本框2:0

我曾嘗試下面的代碼:

def test_example(self): 

    self.set_textbox1('100') 
    self.set_textbox2('0') 

    tb1 = self.find_by_id('textbox1') 
    tb2 = self.find_by_id('textbox2') 

    self.assertEquals((tb1.get_attribute('value'), 100) and (tb2.get_attribute('value'), 0)) 

這提供了以下錯誤:

Traceback (most recent call last): 
File "test_textboxes.py", line 48, in test_textbox 
self.assertEquals((tb1.get_attribute('value'), 100) and (tb2.get_attribute('value'), 0)) 
TypeError: assertEqual() takes at least 3 arguments (2 given) 

有沒有辦法做到這個?

+0

創建第二個斷言線或圈 –

+0

@AriGold我認爲這是不好的做法,有一個測試案例中的多個斷言? – Sithling

+0

注意:assertEquals是一個不推薦的別名,使用assertEqual而不是https://docs.python.org/2/library/unittest.html#deprecated-aliases – ettanany

回答

1

下可以解決您的問題:

串聯的2串:

self.assertEqual(tb1.get_attribute('value') + tb2.get_attribute('value'), '1000') 

或者:

self.assertEqual(''.join([tb1.get_attribute('value'), tb2.get_attribute('value')]), '1000') 

使用的元組:

self.assertEqual((tb1.get_attribute('value'), tb2.get_attribute('value')), (100, 0)) 
+0

謝謝,這解決了這個問題。 – Sithling

+0

看一下使用'.join()的例子編輯' – ettanany

1

對我來說,可讀性是單元測試最重要的一點,我寧願對每種情況都有多行斷言。 你可以保持您的工作流程,但使用assertEqual並添加類似的東西

self.assertEqual((tb1.get_attribute('value'),tb2.get_attribute('value'),(100,0)) 

的AssertionError的是,讓我們說第一個值查詢是99:

AssertionError: (99,0) != (100,0)  
+0

謝謝,這解決了這個問題。 – Sithling