在Selenium Unittest中同时断言两个陈述是正确的

时间:2016-11-22 09:44:02

标签: python unit-testing selenium python-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)

有办法做到这一点吗?

2 个答案:

答案 0 :(得分:1)

对我而言,可读性是单元测试中最重要的一点,我更希望每种情况都有多行断言。 您可以保留工作流程,但使用assertEqual并添加类似

的内容
AssertionError: (99,0) != (100,0)    

AssertionError就是,假设第一个值查询是99:

import numpy as np
a = np.arange(1,5,1.0)
t=0
while t < 10:
    if round(t,2) in set(a):
        print "TIME IS NOW >>>>>>>", t
        t=round(int(t)+1,2)
    else:
        t+=0.05

答案 1 :(得分: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))